Commit Graph

325 Commits

Author SHA1 Message Date
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
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
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 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 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 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 11af28bdbd Fixing up some ABI issues
llvm-svn: 134639
2011-07-07 21:03:52 +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 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
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 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
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 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