Howard Hinnant
b1e3e0e59e
__split_buffer should only require default constructible. Bug found and fixed by Jared Hoberock
...
llvm-svn: 138726
2011-08-28 15:21:29 +00:00
Dave Zarzycki
6137b627ab
Merge the Apple branch into trunk
...
We will eventually rebranch for the next Apple release and when we do, we don't want to drop changes.
llvm-svn: 137940
2011-08-18 15:53:00 +00:00
Howard Hinnant
e41124ade1
Don't move assign string::allocator_type when propagate_on_container_move_assignment is false.
...
llvm-svn: 137862
2011-08-17 20:36:18 +00:00
Howard Hinnant
052fd9349f
Fix needle-in-haystack bug found by Walter Brown
...
llvm-svn: 137617
2011-08-15 17:22:22 +00:00
Howard Hinnant
54976f2619
Fixed PR10574: http://llvm.org/bugs/show_bug.cgi?id=10574
...
llvm-svn: 137522
2011-08-12 21:56:02 +00:00
Howard Hinnant
eaaf7f26df
Correct misspelling:_LIBCPP_APPLE_STABLE_ABI -> _LIBCPP_STABLE_APPLE_ABI
...
llvm-svn: 136597
2011-07-31 17:16:32 +00:00
Howard Hinnant
2425d53cd8
Change how _LIBCPP_HAS_NO_ADVANCED_SFINAE gets set.
...
llvm-svn: 136596
2011-07-31 17:10:44 +00:00
Howard Hinnant
f622b58c83
Fixed PR10507 ( http://llvm.org/bugs/show_bug.cgi?id=10507 )
...
llvm-svn: 136595
2011-07-31 17:04:30 +00:00
Chandler Carruth
8fd6dc0df3
Revert r136547, r136545, and r136542 by removing slist.
...
This was checked in without review. It is not clear its reasonable to
include with libc++ at all, and needs discussion at a highlevel before
moving forward.
It's also completely lacking tests, and included several bugs in the
implementation.
llvm-svn: 136577
2011-07-30 21:10:18 +00:00
Chandler Carruth
aa41ea2cc1
Revert r136546, which was submitted without review.
...
Original change:
Destruct elements of hash tables when removing individual entries from
the hash_table. I think this is the correct solution to PR10507, but I'm
not sure since this is a little bit cargo-culted. Howard, please review.
llvm-svn: 136576
2011-07-30 21:10:16 +00:00
Alexis Hunt
bf78786db0
Add the missing default argument for the allocator and use a cleaner
...
implementation of previous().
llvm-svn: 136547
2011-07-30 00:47:53 +00:00
Alexis Hunt
9663c8cb15
Destruct elements of hash tables when removing individual entries from
...
the hash_table. I think this is the correct solution to PR10507, but I'm
not sure since this is a little bit cargo-culted. Howard, please review.
llvm-svn: 136546
2011-07-30 00:18:12 +00:00
Alexis Hunt
241bf43919
Oops. That last commit was from an earlier revision of the file and was
...
more than just a bit broken. This one should compile and run without
infinite loops.
llvm-svn: 136545
2011-07-30 00:06:52 +00:00
Alexis Hunt
1e846797dd
Include an "implementation" if SGI's slist. This was quickly hacked
...
together to get it working with code, and is neither optimal
(erase(Iterator, Iterator) calculates the previous iterator twice,
rather than calculating the previous iterator of the first one, then
advancing it until the second is found) nor complete (splice() was not
implemented). Most of the implementation is borrowed from forward_list
via using-declarations.
llvm-svn: 136542
2011-07-29 23:42:36 +00:00
Alexis Hunt
8324378195
Explicitly invoke the size_type specialization of max and min. This
...
avoids bugs where, when the allocator's size_type was smaller than int,
the multiplication or division would cause integral promotions and, with
two different integer types as arguments, deduction of the template
arguments would fail.
llvm-svn: 136540
2011-07-29 23:31:58 +00:00
Alexis Hunt
8d2ed56644
Add a new hash class in __gnu_ext for the extension containers. There
...
are two motivations for this.
First, this allows users who are specializing __gnu_ext::hash to
continue doing so without changing their code.
Second, SGI specifies hash overloads for char* and const char* that
perform a hash of the string, not of the pointer.
In order to support this, the hashing code for string is factored out.
llvm-svn: 136539
2011-07-29 23:31:56 +00:00
Alexis Hunt
fe473ae277
Add two missing members from the extension hash containers. The first is
...
the type name 'data_type', which is specified by the SGI spec as being
the correct type name for the mapped type. The second is an overload of
insert found in standard containers, taking an iterator as a 'hint'
(which we ignore in the standard containers as well). libstdc++'s
implementation includes these overloads, and they are needed to make
insert_iterator work (which I suspect is the real motivation for
including them in the standard containers).
The motivation for including these overloads of insert and leaving the
mapped_type typedef is to make it easier for clients to migrate to the
standard containers.
llvm-svn: 136538
2011-07-29 23:31:53 +00:00
Howard Hinnant
89bdcd7ef5
Configure to get along with 2.9 clang
...
llvm-svn: 136526
2011-07-29 21:35:53 +00:00
Howard Hinnant
f4a797e3d2
Optimizing valarray::operator=(some-valarray-expression)
...
llvm-svn: 136291
2011-07-27 23:19:59 +00:00
Howard Hinnant
02364191d6
Fix PR10509: http://llvm.org/bugs/show_bug.cgi?id=10509
...
llvm-svn: 136247
2011-07-27 19:25:28 +00:00
Howard Hinnant
21f78d88e1
Fix PR10510: http://llvm.org/bugs/show_bug.cgi?id=10510
...
llvm-svn: 136232
2011-07-27 18:34:06 +00:00
Howard Hinnant
1dba445e43
http://llvm.org/bugs/show_bug.cgi?id=10469
...
llvm-svn: 135897
2011-07-24 23:59:50 +00:00
Howard Hinnant
520a61383c
Optimization of string::operator< by M.E. O'Neill. Discussion in http://llvm.org/bugs/show_bug.cgi?id=10461
...
llvm-svn: 135893
2011-07-24 21:45:06 +00:00
Howard Hinnant
5b0bdc2043
http://llvm.org/bugs/show_bug.cgi?id=10461
...
llvm-svn: 135873
2011-07-24 15:07:21 +00:00
Howard Hinnant
7e6ca972c9
http://llvm.org/bugs/show_bug.cgi?id=10455
...
llvm-svn: 135854
2011-07-23 16:14:35 +00:00
Dave Zarzycki
6ab85f9e25
Test commit
...
llvm-svn: 135774
2011-07-22 17:08:57 +00:00
Howard Hinnant
09ddc43442
Correct test.
...
llvm-svn: 135460
2011-07-19 01:07:49 +00:00
Alexis Hunt
2405470f01
Adjust two tests to account for a nasty change in copying behavior
...
between C++03 and C++0x and its effect on exceptions, and another two to
not test move construction when rvalue references are not available.
llvm-svn: 135445
2011-07-18 23:51:25 +00:00
Alexis Hunt
483cf24547
Make all fstream tests use tmpnam if creating files, rather than
...
hard-coded names.
llvm-svn: 135444
2011-07-18 23:51:21 +00:00
Alexis Hunt
4c14ed75ee
Do a litmus test of using tmpnam to generate safe temporary file names
...
for the tests that open new data files.
llvm-svn: 135422
2011-07-18 20:46:16 +00:00
Alexis Hunt
397d787642
Given that __underlying_type is now available in clang, implement
...
std::underlying_type.
llvm-svn: 135410
2011-07-18 18:37:21 +00:00
Alexis Hunt
f3ff971561
Give A an explicitly non-throwing destructor so that B's destructor is
...
itself non-throwing. Since nested_exception's destructor is
non-throwing, if B's destructor is not, this causes an error in C++03
mode due to the overriding function having a more lax specification.
This did not occur in C++0x mode as A's destructor was implicitly
non-throwing.
llvm-svn: 135400
2011-07-18 17:07:53 +00:00
Howard Hinnant
e3163f5ae3
http://llvm.org/bugs/show_bug.cgi?id=10390
...
llvm-svn: 135393
2011-07-18 15:51:59 +00:00
Howard Hinnant
8ebf07a3de
Revert locale for apple back to original design, getting rid of now useless helper *_l functions
...
llvm-svn: 135272
2011-07-15 14:46:11 +00:00
Howard Hinnant
3b13c94a14
_LIBCXX_STABLE_APPLE_ABI -> _LIBCPP_STABLE_APPLE_ABI
...
llvm-svn: 135271
2011-07-15 14:25:40 +00:00
Alexis Hunt
bbe2b9dbc4
Fix wchar tests by not assuming that tm is complete and by using the
...
proper va_list time on non-darwin platforms.
llvm-svn: 135247
2011-07-15 05:44:47 +00:00
Alexis Hunt
4084c9ebe5
Reapply 135035 with proper conditional inclusion, hopefully solving
...
issues with it.
llvm-svn: 135246
2011-07-15 05:40:33 +00:00
Howard Hinnant
93a16c0f37
http://llvm.org/bugs/show_bug.cgi?id=10353
...
llvm-svn: 135125
2011-07-14 01:34:46 +00:00
Howard Hinnant
88410049fa
http://llvm.org/bugs/show_bug.cgi?id=10346
...
llvm-svn: 135045
2011-07-13 16:00:50 +00:00
Howard Hinnant
f6b7e20bc8
Reverted to 134947. Once I got into it, I discovered there were too many problems to fix in 135035.
...
llvm-svn: 135044
2011-07-13 15:48:16 +00:00
Alexis Hunt
8a02a632be
Implement the __nolocale functions properly so that they will work on
...
all platforms. Unfortunately a lot of this remains conditionally
compiled so as not to break Apple's ABI.
The new _LIBCPP_LOCALE__L_EXTENSIONS macro can be defined on other
platforms that support _l suffixes for all functions in order to use
them.
llvm-svn: 135035
2011-07-13 06:40:50 +00:00
Alexis Hunt
8dfec1ac7d
Make sure that __time_put constructors properly on non-Apple platforms.
...
llvm-svn: 134947
2011-07-12 00:55:04 +00:00
Howard Hinnant
25659e93c7
Toralf Niebuhr: This is just a tiny patch fixing some small (probably copy & paste) errors.
...
llvm-svn: 134843
2011-07-09 19:47:01 +00:00
Howard Hinnant
7ae42ef0bf
Make vector<bool>::reference and const_reference public
...
llvm-svn: 134815
2011-07-09 15:50:42 +00:00
Alexis Hunt
0081892d33
Don't assume that wctype produces a nice mask on all platforms. On
...
glibc, for instance, it's a const char *.
llvm-svn: 134787
2011-07-09 03:40:04 +00:00
Alexis Hunt
f023519770
Conditionally wrap the changes from r134781.
...
llvm-svn: 134783
2011-07-09 01:09:31 +00:00
Alexis Hunt
3f60bca9e9
Implement generalized table lookups for upper, lower, and character
...
traits.
To the best of my knowledge, this will not break the ABI for Apple.
However, it does introduce three publicly visible (although with
reserved name) functions that will fail to link against the just-shipped
Apple version of libc++. Since they are not used in any inline
functions, no actual breakage should occur.
If Howard doesn't want to put undefined functions (even internal ones)
into a header, they could be surrounded by additional conditional
compilation.
llvm-svn: 134781
2011-07-09 00:56:23 +00:00
Howard Hinnant
3aa229f7dc
provide ~future_error() definition
...
llvm-svn: 134663
2011-07-08 00:04:40 +00:00
Alexis Hunt
e789755db7
Fix typo
...
llvm-svn: 134650
2011-07-07 22:45:07 +00:00
Howard Hinnant
11af28bdbd
Fixing up some ABI issues
...
llvm-svn: 134639
2011-07-07 21:03:52 +00:00
Alexis Hunt
dca31a7964
<inttypes.h> does not necessarily include <stdint.h>. Accordingly, do
...
not test for this.
llvm-svn: 134531
2011-07-06 20:52:28 +00:00
Howard Hinnant
1f8da84b76
Fix uninitialized loop counter. http://llvm.org/bugs/show_bug.cgi?id=10278
...
llvm-svn: 134405
2011-07-05 14:14:17 +00:00
Howard Hinnant
46f7e3f131
Make the default Makefile less destructive: John McCall
...
llvm-svn: 134375
2011-07-04 14:12:27 +00:00
Howard Hinnant
a77445621b
http://llvm.org/bugs/show_bug.cgi?id=10248
...
llvm-svn: 134327
2011-07-02 20:33:23 +00:00
Howard Hinnant
086d0de171
http://llvm.org/bugs/show_bug.cgi?id=10250
...
llvm-svn: 134325
2011-07-02 18:22:36 +00:00
Howard Hinnant
b929de3c3d
Changed constraints on pair and tuple constructors from is_convertible to is_constructible.
...
llvm-svn: 134252
2011-07-01 20:12:51 +00:00
Howard Hinnant
5a33687da0
Correct for new rules regarding implicitly deleted special members. http://llvm.org/bugs/show_bug.cgi?id=10191
...
llvm-svn: 134248
2011-07-01 19:24:36 +00:00
Howard Hinnant
ce48a1137d
_STD -> _VSTD to avoid macro clash on windows
...
llvm-svn: 134190
2011-06-30 21:18:19 +00:00
Howard Hinnant
15434707e4
Patch by Petteri Räty, http://llvm.org/bugs/show_bug.cgi?id=8992
...
llvm-svn: 134155
2011-06-30 14:21:55 +00:00
Howard Hinnant
878e035ea1
test for pair piecewise construction
...
llvm-svn: 133667
2011-06-22 23:51:19 +00:00
Douglas Gregor
64ec101eb6
Teach libc++ about the addressof() overloads it needs to work with
...
Objective-C Automatic Reference Counting, where Objective-C object
pointers can have several different qualifiers (__strong, __weak,
__autoreleasing, __unsafe_unretained). These addressof() overloads are
only provided in ARC mode, and the __weak variant is conditionalized
on having weak-reference support in the ARC runtime.
For historical reasons, Clang provides these definitions itself, and
defines the macro _LIBCPP_PREDEFINED_OBJC_ARC_ADDRESSOF to note when
it as done so. The code belongs here, and this redundancy will be
eliminated in the future.
Addresses <rdar://problem/9658274>.
llvm-svn: 133656
2011-06-22 22:17:44 +00:00
Howard Hinnant
8298b9c2fd
Add instructions for -U__STRICT_ANSI__ for Mac OS 10.6
...
llvm-svn: 133616
2011-06-22 12:13:55 +00:00
Howard Hinnant
a945a32981
More fixes: One of my fixes to type_traits earlier today was incorrect, so that is reverted. Recently clang appears to have tightened up its definition of is_convertible and that has caused some failures in [unordered_][multi]map. I've switched to using is_constructible to restablish the desired functionality in [unordered_][multi]map. Specifically, inserting rvalues of move-only types for the keys.
...
llvm-svn: 133402
2011-06-19 21:45:00 +00:00
Howard Hinnant
2d62821f98
Miscellaneous minor fixes in <type_traits>
...
llvm-svn: 133401
2011-06-19 19:12:59 +00:00
Howard Hinnant
ce53420e37
Provide names for template and function parameters in forward declarations. The purpose is to aid automated documentation tools.
...
llvm-svn: 133008
2011-06-14 19:58:17 +00:00
Nick Kledzik
50aab549c0
more Apple build system tweaks
...
llvm-svn: 132819
2011-06-09 23:31:35 +00:00
Howard Hinnant
30b7d2767c
Update CREDITS.TXT
...
llvm-svn: 132780
2011-06-09 16:53:33 +00:00
Howard Hinnant
32208bde75
Move nullptr_t to unversioned namespace: Sean Hunt
...
llvm-svn: 132665
2011-06-05 13:00:46 +00:00
Howard Hinnant
bd0c160078
noexcept for <stack>. This completes noexcept for Chapter 23 [containers].
...
llvm-svn: 132652
2011-06-04 22:09:19 +00:00
Howard Hinnant
6971d82668
noexcept for <queue>.
...
llvm-svn: 132650
2011-06-04 21:32:33 +00:00
Howard Hinnant
557da866a3
noexcept for <unordered_set>.
...
llvm-svn: 132647
2011-06-04 20:18:37 +00:00
Howard Hinnant
3714107ed6
noexcept for <unordered_map>.
...
llvm-svn: 132646
2011-06-04 18:54:24 +00:00
Howard Hinnant
e691351098
Made more implementation details of [multi]map/set noexcept.
...
llvm-svn: 132642
2011-06-04 17:10:24 +00:00
Howard Hinnant
0e9f71c13f
noexcept for <set>. Plus a few fixes to noexcept for <map>.
...
llvm-svn: 132640
2011-06-04 15:22:34 +00:00
Howard Hinnant
1052ee39cb
noexcept for <map>.
...
llvm-svn: 132639
2011-06-04 14:31:57 +00:00
Howard Hinnant
3297ed7065
noexcept for <vector>. This also includes installing move_if_noexcept() into vector.
...
llvm-svn: 132577
2011-06-03 19:40:40 +00:00
Howard Hinnant
2d45a18c24
Bring noexcept for <string> inline with other containers.
...
llvm-svn: 132573
2011-06-03 18:40:47 +00:00
Howard Hinnant
4590010473
noexcept for <list>.
...
llvm-svn: 132562
2011-06-03 17:30:28 +00:00
Howard Hinnant
91a4750733
noexcept for <forward_list>.
...
llvm-svn: 132553
2011-06-03 16:20:53 +00:00
Howard Hinnant
801291139c
After sleeping on it I've decided that all special members that can be noexcept, should be declared so. The client has the traits to detect and branch on this information, and it is often an important optimization. Give deque() a noexcept. Add test for deque default constructor and deque destructor.
...
llvm-svn: 132549
2011-06-03 15:16:49 +00:00
Howard Hinnant
60954bbbbc
Add noexcept tests for deque.
...
llvm-svn: 132523
2011-06-03 01:46:22 +00:00
Howard Hinnant
b58f59cdb3
Second try at getting noexcept on move and swap for deque. I changed std::alloctor to propagate_on_container_move_assignment so as to make deque<T> move assignment noexcept. What we really need is a compile-time switch that says an allocator always compares equal.
...
llvm-svn: 132490
2011-06-02 21:38:57 +00:00
Howard Hinnant
9eebe11dd5
I've become quite disatsified with the lack of noexcept specifications on container move construction, move assignment operator and swap. Without proper decoration on at least move construction, vectors of containers will have unacceptable performance. Here's the fix for deque.
...
llvm-svn: 132480
2011-06-02 20:00:14 +00:00
Howard Hinnant
f9dc28313f
noexcept for forward_list.
...
llvm-svn: 132461
2011-06-02 16:44:28 +00:00
Howard Hinnant
a87e836083
noexcept for deque.
...
llvm-svn: 132459
2011-06-02 16:10:22 +00:00
Howard Hinnant
bc95cf0d5f
Experimental support for a meaningful __is_swappable<T>::value. This does not appear to be strictly needed for correct functioning of the library. If it causes any problems, I'd rather pull it sooner rather than later.
...
llvm-svn: 132421
2011-06-01 19:59:32 +00:00
Howard Hinnant
e88f577da1
Turning on cxx_nullptr exposed a latent bug in is_function, causing nullptr to wrongly classify as a function. Fixed.
...
llvm-svn: 132406
2011-06-01 17:25:11 +00:00
Howard Hinnant
542b2507de
I've seen this question enough times to know that it should be fixed: http://stackoverflow.com/questions/6193734/implicit-conversions-with-stdfunction
...
llvm-svn: 132363
2011-05-31 21:45:26 +00:00
Howard Hinnant
8f0cd597f1
noexcept for <array>.
...
llvm-svn: 132359
2011-05-31 21:06:33 +00:00
Howard Hinnant
e3c6708439
Upgrade <ratio> to use template aliases when available.
...
llvm-svn: 132342
2011-05-31 16:55:36 +00:00
Howard Hinnant
b5d866d4a3
noexcept for Chapter 22 [localization].
...
llvm-svn: 132337
2011-05-31 15:34:58 +00:00
Howard Hinnant
f5c91471a4
Add _ATTRIBUTE macro for gcc: Justin Hibbits
...
llvm-svn: 132334
2011-05-31 13:13:49 +00:00
Howard Hinnant
76c7cd0e15
noexcept for Chapter 21 [strings].
...
llvm-svn: 132296
2011-05-29 19:57:12 +00:00
Howard Hinnant
28d55e0745
http://llvm.org/bugs/show_bug.cgi?id=10045 . Please review, I have not tested this on linux.
...
llvm-svn: 132287
2011-05-29 13:57:49 +00:00
Howard Hinnant
af152c8431
minor documentation update
...
llvm-svn: 132286
2011-05-29 13:53:56 +00:00
Howard Hinnant
9e5c99f61f
noexcept for <typeindex>. This completes Chapter 20 [utilities].
...
llvm-svn: 132267
2011-05-28 18:57:24 +00:00
Howard Hinnant
cfd52789dc
noexcept for <scoped_allocator>.
...
llvm-svn: 132266
2011-05-28 18:51:12 +00:00
Howard Hinnant
d53d81522d
noexcept for <chrono>.
...
llvm-svn: 132265
2011-05-28 18:34:36 +00:00
Howard Hinnant
6a07d6f06d
noexcept for <functional>.
...
llvm-svn: 132264
2011-05-28 17:59:48 +00:00
Howard Hinnant
3739fe79e5
noexcept for <memory>. I've added a few extension noexcept to: allocator_traits<A>::deallocate, allocaate<T>::deallocate, return_temporary_buffer, and default_delete<T>::operator()(T*) const. My rationale was: If a std-dicated noexcept function needs to call another std-defined function, that called function must be noexcept. We're all a little new to noexcept, so things like this are to be expected. Also included fix for broken __is_swappable trait pointed out by Marc Glisse, thanks Marc|. And fixed a test case for is_nothrow_destructible. Destructors are now noexcept by default|
...
llvm-svn: 132261
2011-05-28 14:41:13 +00:00