Commit Graph

602 Commits

Author SHA1 Message Date
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
Howard Hinnant d368a84c91 noexcept for <bitset>.
llvm-svn: 132216
2011-05-27 20:52:28 +00:00
Howard Hinnant 27d0a2a75d noexcept for <tuple>. And in the process learned that I had done it wrong for pair's swap. I needed to create an __is_nothrow_swappable<T>::value trait that was smart enought to answer false when __is_swappable<T>::value is false. Otherwise one gets compile-time errors when using pair or tuple of non-swappable types, even if you never try to swap the pair or tuple.
llvm-svn: 132204
2011-05-27 19:08:18 +00:00
Howard Hinnant a676f7d36a noexcept for <utility>. This included a little repair on pair, and some noexcept workarounds.
llvm-svn: 132186
2011-05-27 15:04:19 +00:00
Howard Hinnant a62f28994c Applied noexcept to everything in [diagnostics] (Chapter 19)
llvm-svn: 132137
2011-05-26 19:48:01 +00:00
Howard Hinnant 411d1bcc3b Turn on cxx_alias_templates support
llvm-svn: 132134
2011-05-26 19:07:54 +00:00
Howard Hinnant fafca58c58 Applied noexcept to everything in [language.support] (Chapter 18)
llvm-svn: 132129
2011-05-26 18:23:59 +00:00
Howard Hinnant 400b244339 Added [[noreturn]] attribute everywhere it should be
llvm-svn: 132125
2011-05-26 17:07:32 +00:00
Nick Kledzik bc6191fba9 support another Apple build environment
llvm-svn: 131996
2011-05-24 20:27:31 +00:00
Nick Kledzik 664c0da5d8 on Darwin re-export C++0x type infos
llvm-svn: 131995
2011-05-24 20:26:04 +00:00
Howard Hinnant cf76200bd3 http://llvm.org/bugs/show_bug.cgi?id=9399 fixed by Ryuta Suzuki
llvm-svn: 131961
2011-05-24 12:54:00 +00:00
Howard Hinnant 2fa07ae9a0 Fix const correctness bug in bind involving reference_wrapper found by Jonathan Sauer
llvm-svn: 131852
2011-05-22 15:07:43 +00:00
Howard Hinnant 5eb6bdfa1d __invokable and __invoke_of now check for incomplete types and issue a compile-time diagnostic if they are used with incomplete types for anything except a return type. Note that both arguments *and* parameters are checked for completeness.
llvm-svn: 131818
2011-05-22 00:09:02 +00:00
Howard Hinnant 6282a4a1d3 This is a simplified (and superior) implementation of __invoke, __invokable and __invoke_of. It is superior in that __invoke now handles reference qualified member functions whereas the previous implementation did not. And it simply has less infrastructure in its implementation. I'm still learning how to program in C++11 (and probably will be for a long time). This change does not impact the behavior we're seeing in http://llvm.org/bugs/show_bug.cgi?id=9975
llvm-svn: 131761
2011-05-20 22:02:53 +00:00
Howard Hinnant 2344d6c195 Simplied bind using __invoke. In the process, found and fixed a couple of bugs. C++11 only.
llvm-svn: 131667
2011-05-19 19:41:47 +00:00
Howard Hinnant ec0810e1c8 I had a giant misunderstanding of what 'synchronizes with' meant in [futures.async]/p5. This invalidated the current design of async in <future>. This is a new design, based on my new understanding, which has been confirmed on the lwg mailing list. The summary is that ~future() (and ~shared_future()) will block when they are created from within async, and the thread hasn't finished yet. As part of this work I created two new type traits: __invokable<F, Args...>::value and __invoke_of<F, Args...>::type. These are what result_of<F(Args...)> wanted to be when it grew up, but never will be. __invoke_of is carefully crafted so that it can serve as its own enable_if (type doesn't exist if the signature isn't invokable). All of this work is C++11 only.
llvm-svn: 131639
2011-05-19 15:05:04 +00:00
Howard Hinnant c2bf9e1851 This commit was accidental. Reverting.
llvm-svn: 131514
2011-05-18 00:47:00 +00:00
Howard Hinnant 781afe1934 A bunch of future tests got invalidated with the latest updates to thread. Fixed the tests.
llvm-svn: 131509
2011-05-17 23:32:48 +00:00
Howard Hinnant dcaa2e9294 Fix ambiguity in operator== of scoped_allocator_adaptor.
llvm-svn: 131485
2011-05-17 20:41:18 +00:00
Howard Hinnant 651fedb82c Fixed bug in recently introduced bind move constructor
llvm-svn: 131484
2011-05-17 20:27:51 +00:00
Howard Hinnant 5fdeee5b3a Fix and beef up test bug for move_if_noexcept
llvm-svn: 131483
2011-05-17 20:10:42 +00:00
Howard Hinnant fe7e3eeddc Clean up a bunch of warnings in the tests, 3 of which actually turned out to be test bugs.
llvm-svn: 131479
2011-05-17 19:12:55 +00:00
Howard Hinnant 872a91167e Brought call_once variadic call up to current spec, which allows move-only functors and move-only arguments, but disallows functors with non-const lvalue reference parameters.
llvm-svn: 131414
2011-05-16 19:05:11 +00:00
Howard Hinnant 8df61ea84d Brought thread variadic constructor up to current spec, which allows move-only functors and move-only arguments, but disallows functors with non-const lvalue reference parameters.
llvm-svn: 131413
2011-05-16 18:40:35 +00:00
Howard Hinnant 7735ccaf86 Supply missing std::qualifier to call.
llvm-svn: 131410
2011-05-16 16:20:59 +00:00
Howard Hinnant 23fdcd70c6 Spit 5th bullet __invoke into function pointers and everything else because result_of doesn't deal with function pointers.
llvm-svn: 131409
2011-05-16 16:20:21 +00:00
Howard Hinnant 07de7bcaa0 Supply missing move ctor in __bind_r, though this one will eventually be defaulted
llvm-svn: 131408
2011-05-16 16:19:01 +00:00
Howard Hinnant 15c34d48ba Redesign of result_of to handle reference-qualified member functions
llvm-svn: 131407
2011-05-16 16:17:21 +00:00
Howard Hinnant b12c37b302 Fix type-o found by Justin Hibbits
llvm-svn: 131348
2011-05-14 18:20:45 +00:00
Howard Hinnant 6db38ae05c Fix type-o found by Justin Hibbits
llvm-svn: 131346
2011-05-14 17:24:22 +00:00
Howard Hinnant af6c26b366 Warning suppression in test.
llvm-svn: 131344
2011-05-14 15:38:08 +00:00
Howard Hinnant 3962348edf Warning suppression in test.
llvm-svn: 131343
2011-05-14 15:36:25 +00:00
Howard Hinnant 6c4c6a8047 Warning suppression in test.
llvm-svn: 131341
2011-05-14 14:53:12 +00:00
Howard Hinnant c6b9ff1169 Correction to hexfloat hack.
llvm-svn: 131340
2011-05-14 14:33:56 +00:00
Howard Hinnant e0d67710e9 Fix test bug.
llvm-svn: 131328
2011-05-14 00:07:53 +00:00
Howard Hinnant fe7cffaf57 Suppress some warings in the tests.
llvm-svn: 131327
2011-05-14 00:04:05 +00:00
Howard Hinnant a7fa0710cb Suppress some warings in the tests.
llvm-svn: 131326
2011-05-13 23:59:50 +00:00
Howard Hinnant fb7f07e3bd http://llvm.org/bugs/show_bug.cgi?id=9854. Also created an emulated hexfloat literal for use in some of the tests. <sigh> And cleaned up some harmless but irritating warnings in the tests.
llvm-svn: 131318
2011-05-13 21:52:40 +00:00
Howard Hinnant 3e71464d50 http://llvm.org/bugs/show_bug.cgi?id=9118
llvm-svn: 131296
2011-05-13 17:16:06 +00:00
Howard Hinnant 467fc38320 A much improved type_traits for C++0x. Not yet done: is_trivially_constructible, is_trivially_assignable and underlying_type.
llvm-svn: 131291
2011-05-13 14:08:16 +00:00
Howard Hinnant 5dbf45dfe0 CWG 1170 has been fixed for destructors
llvm-svn: 131290
2011-05-13 13:39:08 +00:00
Alexis Hunt 662d91f1cd __is_trivially_copyable now supplied by clang
llvm-svn: 131271
2011-05-13 00:32:09 +00:00
Howard Hinnant f208605bd4 Corrected misspelling
llvm-svn: 131265
2011-05-13 00:03:08 +00:00
Howard Hinnant b24491b73e Updated to reflect updated use of existing clang support
llvm-svn: 131264
2011-05-13 00:01:01 +00:00
Howard Hinnant f738497500 Corrected some bugs in both memory and the tests. Preparing for being able to turn on support for alias templates.
llvm-svn: 131199
2011-05-11 20:21:19 +00:00
Howard Hinnant 08ad63b580 Redid nothrow traits in terms of non-nothrow traits when noexcept is available
llvm-svn: 131198
2011-05-11 20:19:40 +00:00
Howard Hinnant 0cfdb9517e Updated type_traits and the type_traits design doc with recent work done in clang.
llvm-svn: 131090
2011-05-09 19:21:17 +00:00
Nick Kledzik f9ad245c90 change RC_BUILDIT to RC_XBS for detecting Apple build environment
llvm-svn: 130970
2011-05-06 01:13:20 +00:00
Nick Kledzik 7db91cefb2 add support for setjmp/longjmp based exceptions
llvm-svn: 130938
2011-05-05 18:45:41 +00:00
Nick Kledzik de214e29df <rdar://problem/9014045> more support for Apple internal build environments
llvm-svn: 130872
2011-05-04 21:50:46 +00:00
Howard Hinnant 575d41ee92 Correction to set of overloaded pair constructors for C++0x
llvm-svn: 130521
2011-04-29 18:10:55 +00:00
Douglas Gregor 6c38001ec5 Qualify calls to std::next(), to avoid conflicts with
libraries/applications that define their own 'next' template.

llvm-svn: 130511
2011-04-29 16:20:26 +00:00
Howard Hinnant 9d06c8c326 http://llvm.org/bugs/show_bug.cgi?id=9765
llvm-svn: 129910
2011-04-21 14:29:59 +00:00
Howard Hinnant 866d73c7b4 Think-o in poisson_distribution at mean == 10
llvm-svn: 129520
2011-04-14 15:59:22 +00:00
Howard Hinnant a23551cad4 Fix bug in Sseq constraints found by Seth Cantrell
llvm-svn: 129285
2011-04-11 18:22:12 +00:00
Howard Hinnant 40dab2ce86 http://llvm.org/bugs/show_bug.cgi?id=9672
llvm-svn: 129266
2011-04-11 02:18:41 +00:00
Howard Hinnant 784ba65787 Changes to cerrno to protect against the case the ELAST is not defined.
llvm-svn: 129255
2011-04-10 19:46:55 +00:00
Howard Hinnant 1444d85b5a time_get was missing the %F specifier. This change impacts the binary.
llvm-svn: 129251
2011-04-10 17:54:14 +00:00
Howard Hinnant a9c7c14ebb Chris Jefferson found a missing const (Bugzilla 9632)
llvm-svn: 128885
2011-04-05 14:55:28 +00:00
Howard Hinnant e4b11156d7 Corrected tests for http://llvm.org/bugs/show_bug.cgi?id=9351
llvm-svn: 128807
2011-04-04 01:42:30 +00:00
Howard Hinnant e4bafbee25 ... And these wonderful tests.
llvm-svn: 128797
2011-04-03 20:06:31 +00:00
Howard Hinnant dbe14303da Chris Jefferson submitted this patch to fix http://llvm.org/bugs/show_bug.cgi?id=9351
llvm-svn: 128796
2011-04-03 20:05:29 +00:00
Howard Hinnant 890477f333 Provide a more readable error message for <atomic> until it is implemented.
llvm-svn: 128636
2011-03-31 16:39:39 +00:00
Howard Hinnant 382600ff97 Jonathan Sauer found a bug in the way ^ was handled
llvm-svn: 128350
2011-03-26 20:02:27 +00:00
Howard Hinnant 8e2617780a Jonathan Sauer updated is_base_of traits status
llvm-svn: 128349
2011-03-26 19:58:42 +00:00
Nick Kledzik 4f8ccdf2f8 <rdar://problem/9073695> std::uncaught_exception() becomes true before evaluating the throw-expression rather than after
llvm-svn: 127499
2011-03-11 22:33:07 +00:00
Howard Hinnant 8f934e42d8 http://llvm.org/bugs/show_bug.cgi?id=9444
llvm-svn: 127412
2011-03-10 17:27:57 +00:00
Howard Hinnant 8cad46266c I have to revert this recent fix to tuple conversions until clang implements cwg 1170. Without this fix pair and tuple don't convert properly. With it, associative containers get access errors when they shouldn't. cwg 1170 fixes the latter.
llvm-svn: 127411
2011-03-10 17:27:30 +00:00
Howard Hinnant 709b108ae1 Corrected const-correctness on nullptr type_traits, and beefed up the test for nullptr_t.
llvm-svn: 127338
2011-03-09 17:17:06 +00:00
Howard Hinnant d6c80dec76 Walter Brown brought to my attention that type_traits was failing to correctly classify nullptr_t
llvm-svn: 127334
2011-03-09 15:10:51 +00:00
Howard Hinnant f1bf6f9a3a Chris Jefferson found a defect in the C++0x working draft by trying to run libc++ against boost. I've submitted an issue to the LWG, and this commit attempts to implement the proposed resolution of that defect report. I'd point to the issue but it hasn't been put into the LWG list yet. The title of the issue will be: Stage 2 accumulate incompatibilty
llvm-svn: 127303
2011-03-09 01:03:19 +00:00
Howard Hinnant 3145a948d6 http://llvm.org/bugs/show_bug.cgi?id=9349 I introduced a bug with the last fix and Ryuta Suzuki has corrected it. And hopefully I committed Ryuta Suzuki's directions correctly this time.
llvm-svn: 126917
2011-03-03 01:59:23 +00:00
Howard Hinnant 01533ed9ad http://llvm.org/bugs/show_bug.cgi?id=9349 I have not personally tested this patch. Please let me know if it causes problems.
llvm-svn: 126846
2011-03-02 17:29:46 +00:00
Howard Hinnant b5d166ad93 Chris Jefferson found this bug to pair/tuple introduced by a recent change to the draft that I missed.
llvm-svn: 126743
2011-03-01 14:27:55 +00:00
Howard Hinnant 99847d2bf1 Fix copy_n to increment only n-1 times for an input iterator. This works much better with std::istream_iterator<int>(std::cin). Credit: Matan Nassau.
llvm-svn: 126581
2011-02-27 20:55:39 +00:00
Howard Hinnant 73736effce Fixed two problems found by Chris Jefferson: Made operator>> for char consistent with gcc. Opened an LWG issue on this one. 2) Renamed some private typedefs which are causing boost grief.
llvm-svn: 126576
2011-02-27 18:02:02 +00:00
Howard Hinnant a8d8ca4d6f http://llvm.org/bugs/show_bug.cgi?id=9326
llvm-svn: 126504
2011-02-25 19:52:41 +00:00
Howard Hinnant 0c68ed006d Chris Jefferson spotted a problem with messages_base::catalog while getting libc++ to work on boost. The standard says this type must be an int. But this type is the key returned by the OS facility catopen. On OS X the type returned by catopen is void*, which doesn't fit into an int on 64 bit platforms. Chris suggested using ptrdiff_t instead of void*. It still isn't compliant with the standard, but chances are that this change will fix what is ailing boost. Chris also supplied the algorithm for distinguishing high-order pointers from error conditions. Thanks Chris.
llvm-svn: 126462
2011-02-25 00:51:08 +00:00
Howard Hinnant 80a3cadab7 Jean-Daniel Dupas fixes install directions
llvm-svn: 126222
2011-02-22 14:18:34 +00:00
Howard Hinnant 1a36219c86 Change install name to libc++.1.dylib
llvm-svn: 125626
2011-02-16 00:40:06 +00:00
Howard Hinnant a0fe8c436e Chris Jefferson noted many places where function calls needed to be qualified (thanks Chris).
llvm-svn: 125510
2011-02-14 19:12:38 +00:00
Howard Hinnant bd356a8011 Update testit to default to clang
llvm-svn: 125498
2011-02-14 18:06:10 +00:00
Howard Hinnant f190990546 fix stupid type-o
llvm-svn: 125311
2011-02-10 21:34:42 +00:00
Howard Hinnant 05033424f9 Installed __has_feature(is_convertible_to) and __has_feature(is_base_of)
llvm-svn: 125290
2011-02-10 17:46:03 +00:00
Howard Hinnant da3b02fdb3 Missing traits::to_int_type in fstream
llvm-svn: 124727
2011-02-02 17:37:16 +00:00
Howard Hinnant 72c5e14203 Qualify calls to addressof with std::. Bug 9106
llvm-svn: 124726
2011-02-02 17:36:20 +00:00
Howard Hinnant 2774545736 Bug 9096 - list::iterator not default constructible
llvm-svn: 124508
2011-01-28 23:46:28 +00:00
Howard Hinnant d44be13fa8 minor corrections to test, and hook is_base_of up to clang intrinsic
llvm-svn: 124502
2011-01-28 20:00:37 +00:00
Douglas Gregor 59f5dc60d2 Eliminate extraneous {};
llvm-svn: 124456
2011-01-27 23:36:08 +00:00
Howard Hinnant e4de279009 Updated getting started directions.
llvm-svn: 124452
2011-01-27 23:18:19 +00:00
Howard Hinnant 8d3b8265a6 updated buildit to work with recent clang updates
llvm-svn: 124432
2011-01-27 21:01:51 +00:00
Howard Hinnant 80b2905b83 clang found a missing return statement.
llvm-svn: 124431
2011-01-27 21:01:11 +00:00
Howard Hinnant eb92df7e9e Make forward_list splice_after and merge work for lvalue lists
llvm-svn: 124430
2011-01-27 21:00:35 +00:00
Howard Hinnant 7015add232 Reverted previous fix to is_convertible as it caused more problems than it fixed. But this reverted fix will only matter for non-clang compilers. Installed __is_convertible_to for clang.
llvm-svn: 124429
2011-01-27 21:00:00 +00:00
Douglas Gregor 71711a673b Inline namespaces are always available in Clang. Rely on that without
testing via __has_feature, since __has_feature for C++0x features no
longer evaluates true in C++98/03 mode.

Also, eliminate the redundant using directive. Inline namespaces make
their members visible in the enclosing namespace automatically.

llvm-svn: 124293
2011-01-26 15:39:56 +00:00
Douglas Gregor d18302f1bb Teach move_iterator that rvalue references cannot bind to non-function
lvalues, nor can one take the address of an xvalue, by adding
appropriate static_cast's (in the first case) and a temporary (in the
second case).

llvm-svn: 124255
2011-01-26 00:12:48 +00:00
Howard Hinnant ad16003517 Add always_inline to string move constructors
llvm-svn: 124252
2011-01-26 00:06:59 +00:00
Douglas Gregor 175a104028 Remove an (incorrect) compiler workaround in the __mu function. The
workaround relied on rvalue references binding to non-function
lvalues, while the original formulation (with std::forward) does the
right thing.

llvm-svn: 124241
2011-01-25 23:11:15 +00:00
Howard Hinnant 389eb9b54a placeholder test
llvm-svn: 124193
2011-01-25 16:32:04 +00:00
Howard Hinnant 2a3f1bc13f tweak for readability (no functionality change)
llvm-svn: 124192
2011-01-25 16:31:30 +00:00
Douglas Gregor 912e161ce0 An rvalue reference cannot bind to an lvalue, so static_cast the
result of the __tuple_leaf::get() call to an rvalue reference when
returning from tuple's get().

llvm-svn: 124190
2011-01-25 16:14:21 +00:00
Douglas Gregor a7b2241407 Eliminate the C++0x-only is_convertible testing function that accepts
a cv-qualifier rvalue reference to the type, e.g.,

  template <class _Tp> char  __test(const volatile typename remove_reference<_Tp>::type&&);

The use of this function signature rather than the more
straightforward one used in C++98/03 mode, e.g.,

  template <class _Tp> char  __test(_Tp);

is broken in two ways:

  1) An rvalue reference cannot bind to lvalues, so is_convertible<X&,
  X&>::value would be false. This breaks two of the unique_ptr tests
  on Clang and GCC >= 4.5. Prior GCC's seem to have allowed rvalue
  references to bind to lvalues, allowing this bug to slip in.

  2) By adding cv-qualifiers to the type we're converting to, we get
  some incorrect "true" results for, e.g., is_convertible<const X&, X&>::value.

llvm-svn: 124166
2011-01-25 01:15:41 +00:00
Howard Hinnant 465abe92a5 Chandler Carruth changed >> to > > in several places.
llvm-svn: 124120
2011-01-24 16:07:25 +00:00
Chandler Carruth ce395a9acd Teach the Lit configuration to actually use the cxx0x setting when
constructing compile flags, and to link against the 'rt' library on
Linux for clock_gettime and friends.

llvm-svn: 124052
2011-01-23 01:05:20 +00:00
Howard Hinnant 2503626838 Add attribute to inlined member.
llvm-svn: 123392
2011-01-13 20:05:05 +00:00
Howard Hinnant 59a7dc95de Fixing an ambiguity in variadics found by clang.
llvm-svn: 123337
2011-01-12 22:56:59 +00:00
Howard Hinnant 119cd0ba12 fix guard
llvm-svn: 123269
2011-01-11 20:02:45 +00:00
Howard Hinnant b5b2a1e19a Two minor fixes: 1. Put integral_constant conversion to integral in even without constexpr support. 2. Add ios_base to <iosfwd>. The latter is being tracked by LWG 2026.
llvm-svn: 123080
2011-01-08 20:00:48 +00:00
Howard Hinnant 36fd9f96cf Reverting an old optimization that conflicts with the new allocator model, and causes some test casees to compile that shouldn't.
llvm-svn: 122830
2011-01-04 19:53:31 +00:00
Howard Hinnant ab061a656d Marshall Clow's fix for Bug 8421.
llvm-svn: 122825
2011-01-04 19:21:05 +00:00
Howard Hinnant c950e77d1d Effort to reduce the number of exported symbols
llvm-svn: 122057
2010-12-17 14:46:43 +00:00
Howard Hinnant ba31cbdbca Reduced copying cost of tuple_cat from quadratic to linear.
llvm-svn: 121655
2010-12-12 23:04:37 +00:00
Howard Hinnant 7f64810bc8 LWG 1385 [FCD] tuple_cat should be a single variadic signature (http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-active.html#1385). This issue is only in Ready status, meaning it is not official, but probably will be this March in Madrid. It was tentatively accepted in Batavia with the previso that Bill and I didn't have any problems implementing it. This is my part of that agreement.
llvm-svn: 121619
2010-12-11 20:47:50 +00:00
Howard Hinnant d4a83d078c The implementation of the new definition of result_of (N3123) resulted in some test failures in [func.memfn] that I failed to previously notice. This corrects that mistake.
llvm-svn: 121600
2010-12-11 00:05:19 +00:00
Michael J. Spencer f5799be4a8 Add CMake build and fix major Linux blockers.
llvm-svn: 121510
2010-12-10 19:47:54 +00:00
Howard Hinnant 7f8e26867f Test adjustment for recent changes in allocator_traits
llvm-svn: 121503
2010-12-10 19:22:37 +00:00
Howard Hinnant 088bd9aa14 This got accidentally removed
llvm-svn: 121502
2010-12-10 19:22:00 +00:00
Howard Hinnant 966b5a3157 N3158 Missing preconditions for default-constructed match_result objects
llvm-svn: 121282
2010-12-08 21:07:55 +00:00
Howard Hinnant 3135def61d cleaning up...
llvm-svn: 121275
2010-12-08 20:09:09 +00:00
Howard Hinnant b5452b3db5 After a long break to wait for the atomic spec to settle, this completes the library part of <atomic>. It currently won't even parse as it depends on the existence of the intrinsics specified at http://libcxx.llvm.org/atomic_design_a.html. Everything has been tested using fake intrinsics which have now been removed. As the intrinsics come online, the ATOMIC_* macros will need to be adjusted to reflect which operations are lock-free. These macros will probably need to be #ifdef'd for each supported platform.
llvm-svn: 121267
2010-12-08 17:20:28 +00:00
Michael J. Spencer 5f53fceff0 test: Rename string_op+= to string_op_plus_equal. Windows git doesn't like it.
llvm-svn: 121265
2010-12-08 17:06:47 +00:00
Howard Hinnant c5f5f0a166 atomics ...
llvm-svn: 121204
2010-12-07 23:24:41 +00:00
Howard Hinnant 0e1cd17d0a atomics ...
llvm-svn: 121202
2010-12-07 23:20:28 +00:00
Howard Hinnant c772a62096 Work on <atomic> continues. The file size is actually sane now...
llvm-svn: 121181
2010-12-07 20:46:14 +00:00
Howard Hinnant 9847abacb1 Getting <atomic> warmed back up. We have a hopefully more stable spec now. And I believe the intrinsic spec at http://libcxx.llvm.org/atomic_design_a.html is still good.
llvm-svn: 121064
2010-12-06 23:10:08 +00:00
Howard Hinnant fd18df5b2e Add a couple more std-qualifers.
llvm-svn: 121002
2010-12-06 15:11:48 +00:00
Howard Hinnant 75357bcd39 oops, forgot std::
llvm-svn: 120915
2010-12-04 19:56:43 +00:00
Howard Hinnant 816cb8975d Fix up uses of new/terminate/unexpected handlers to use the new getters.
llvm-svn: 120914
2010-12-04 19:54:11 +00:00
Howard Hinnant 4dcf83cbd5 Add typeinfo for char16_t, char32_t and nullptr.
llvm-svn: 120810
2010-12-03 17:25:24 +00:00
Howard Hinnant 1596c4531b N3189 Observers for the three handler functions
llvm-svn: 120712
2010-12-02 16:45:21 +00:00
Howard Hinnant 92e3718b13 Implemented N3194
llvm-svn: 120458
2010-11-30 20:23:32 +00:00
Howard Hinnant 6fd5c65095 Minor fixup in <ratio> and add optional support for shared_mutex and upgrade_mutex which must be opted into with #define _LIBCPP_SHARED_LOCK
llvm-svn: 120258
2010-11-28 19:41:07 +00:00
Howard Hinnant 0c6a0fe7fb Add template alias emulation to <ratio>
llvm-svn: 120098
2010-11-24 17:05:06 +00:00
Howard Hinnant e78881314a Update testsuite strucuture to latest draft
llvm-svn: 120064
2010-11-23 22:13:07 +00:00
Howard Hinnant b32f147bbf Update testsuite strucuture to latest draft
llvm-svn: 120058
2010-11-23 20:55:56 +00:00
Howard Hinnant fedfe3b69c Update testsuite strucuture to latest draft
llvm-svn: 120057
2010-11-23 20:55:36 +00:00
Howard Hinnant ab7be6e43c Update testsuite strucuture to latest draft
llvm-svn: 120054
2010-11-23 20:47:09 +00:00
Howard Hinnant 4030e72457 Update testsuite strucuture to latest draft
llvm-svn: 120045
2010-11-23 20:26:48 +00:00
Howard Hinnant 46cc61ea7c Update testsuite strucuture to latest draft
llvm-svn: 120043
2010-11-23 20:25:10 +00:00
Howard Hinnant e8ce332127 Update testsuite strucuture to latest draft
llvm-svn: 120040
2010-11-23 20:21:36 +00:00
Howard Hinnant 274541968b Update testsuite strucuture to latest draft
llvm-svn: 120036
2010-11-23 19:52:19 +00:00
Howard Hinnant e5cb278766 Update testsuite strucuture to latest draft
llvm-svn: 120029
2010-11-23 19:15:49 +00:00
Howard Hinnant e3120ed1bf N3188 - Revision to N3113: Async Launch Policies (CH 36)
llvm-svn: 120027
2010-11-23 18:33:54 +00:00
Howard Hinnant 3dc6455ff0 N3191: C++ Timeout Specification
llvm-svn: 119909
2010-11-20 19:16:30 +00:00
Howard Hinnant 092980dd65 N3123
llvm-svn: 119906
2010-11-20 18:25:22 +00:00
Howard Hinnant ca74048398 N3142. Many of these traits are just placeholders with medium quality emulation; waiting on compiler intrinsics to do it right.
llvm-svn: 119854
2010-11-19 22:17:28 +00:00
Howard Hinnant 348bb56a82 type_traits intrinsics design
llvm-svn: 119776
2010-11-19 01:48:13 +00:00
Howard Hinnant 4b88967b70 type_traits intrinsics design
llvm-svn: 119775
2010-11-19 01:38:58 +00:00
Howard Hinnant d518d1c807 LWG 1522
llvm-svn: 119710
2010-11-18 17:34:48 +00:00
Howard Hinnant 908484b147 LWG 1439
llvm-svn: 119703
2010-11-18 17:01:36 +00:00
Howard Hinnant 48d05bd26c LWG 1339
llvm-svn: 119699
2010-11-18 16:13:03 +00:00
Howard Hinnant fb34010258 LWG 1432
llvm-svn: 119611
2010-11-18 01:47:02 +00:00
Howard Hinnant a4a1ef1fc2 LWG 1404
llvm-svn: 119609
2010-11-18 01:40:00 +00:00
Howard Hinnant d09f711dc2 LWG 1325
llvm-svn: 119571
2010-11-17 21:53:14 +00:00
Howard Hinnant 5ba1459c4c LWG 1323
llvm-svn: 119560
2010-11-17 21:11:40 +00:00
Howard Hinnant 601afb30ec LWG 1191
llvm-svn: 119545
2010-11-17 19:52:17 +00:00
Howard Hinnant ef6168357a LWG 1118
llvm-svn: 119541
2010-11-17 19:22:43 +00:00
Howard Hinnant 57d1ebcc38 Update <string> to use allocator_traits.
llvm-svn: 119522
2010-11-17 17:55:08 +00:00
Howard Hinnant 412dbebe1b license change
llvm-svn: 119395
2010-11-16 22:09:02 +00:00
Chris Lattner 58dffe641b libc++ is now dual licensed under both UIUC and MIT licenses.
llvm-svn: 119391
2010-11-16 21:40:19 +00:00
Chris Lattner 4c9fa8a132 add a credits file for libc++
llvm-svn: 119390
2010-11-16 21:39:15 +00:00
Howard Hinnant 9b35c8275c Dave Zarzycki showed how the efficiency of shared_ptr could be significantly
increased.  The following program is running 49% faster:

#include <iostream>
#include <memory>
#include <chrono>
#include <vector>
#include "chrono_io"

int main()
{
    typedef std::chrono::high_resolution_clock Clock;
    Clock::time_point t0 = Clock::now();
    {
        std::shared_ptr<int> p(new int (1));
        std::vector<std::shared_ptr<int> > v(1000000, p);
        v.insert(v.begin(), p);
        v.insert(v.begin(), p);
        v.insert(v.begin(), p);
        v.insert(v.begin(), p);
    }
    Clock::time_point t1 = Clock::now();
    std::cout << (t1-t0) << '\n';
}

llvm-svn: 119388
2010-11-16 21:33:17 +00:00