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
Howard Hinnant
c4931c4746
I have reverted all contributions made by Jesse Towner in revision 110724
...
llvm-svn: 119383
2010-11-16 21:10:23 +00:00
Nick Kledzik
4b6ccfd9ce
update to use new linker option to re-export from libc++abi.dylb
...
llvm-svn: 117691
2010-10-29 19:46:14 +00:00
Howard Hinnant
5ec1826429
Secure __next_prime from overflowing
...
llvm-svn: 117650
2010-10-29 14:10:30 +00:00
Howard Hinnant
007b26be68
Fixed bug in random_shuffle to avoid swapping with self
...
llvm-svn: 117098
2010-10-22 15:26:39 +00:00