| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 280777
|
| |
|
|
|
|
|
|
|
|
|
| |
This assignment operator was previously broken since the SFINAE always resulted
in substitution failure. This caused assignments to turn into
copy construction + assignment.
This patch was originally committed as r279953 but was reverted due to warnings
in the test-suite. This new patch corrects those warnings.
llvm-svn: 279955
|
| |
|
|
|
|
|
| |
The test emits warnings causing the test-suite to fail. Since I want this
patch merged into 3.9 I'll recommit it with a clean test.
llvm-svn: 279954
|
| |
|
|
|
|
|
|
| |
This assignment operator was previously broken since the SFINAE always resulted
in substitution failure. This caused assignments to turn into
copy construction + assignment.
llvm-svn: 279953
|
| |
|
|
| |
llvm-svn: 278323
|
| |
|
|
| |
llvm-svn: 278319
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This patch adds std::any by moving/adapting <experimental/any>.
This patch also implements the std::any parts of p0032r3 (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0032r3.pdf)
and LWG 2509 (http://cplusplus.github.io/LWG/lwg-defects.html#2509).
I plan to push it in a day or two if there are no comments.
Reviewers: mclow.lists, EricWF
Subscribers: cfe-commits
Differential Revision: https://reviews.llvm.org/D22733
llvm-svn: 278310
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This patch removes the static_assert for non-enum types in the primary hash template. Instead non-enum types create a hash<T> specialization that is not constructible nor callable.
See also:
* http://cplusplus.github.io/LWG/lwg-active.html#2543
* https://llvm.org/bugs/show_bug.cgi?id=28917
Reviewers: mclow.lists, EricWF
Subscribers: mehdi_amini, cfe-commits
Differential Revision: https://reviews.llvm.org/D23331
llvm-svn: 278300
|
| |
|
|
| |
llvm-svn: 277573
|
| |
|
|
| |
llvm-svn: 276608
|
| |
|
|
| |
llvm-svn: 276605
|
| |
|
|
|
|
|
| |
I think I've solved issues with is_assignable and references to incomplete
types. The updated patch adds tests for this case.
llvm-svn: 276603
|
| |
|
|
| |
llvm-svn: 276599
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This is a breaking change. The SFINAE required is instantiated the second
the class is instantiated, and this can cause hard SFINAE errors
when applied to references to incomplete types. Ex.
struct IncompleteType;
extern IncompleteType it;
std::tuple<IncompleteType&> t(it); // SFINAE will blow up.
llvm-svn: 276598
|
| |
|
|
|
|
|
|
| |
In C++03 mode evaluating the SFINAE can cause a hard error due to
access control violations. This is a problem because the SFINAE
is evaluated as soon as the class is instantiated, and not later.
llvm-svn: 276594
|
| |
|
|
| |
llvm-svn: 276589
|
| |
|
|
| |
llvm-svn: 276587
|
| |
|
|
| |
llvm-svn: 276583
|
| |
|
|
|
|
| |
STL@microsoft.com
llvm-svn: 276576
|
| |
|
|
| |
llvm-svn: 276548
|
| |
|
|
| |
llvm-svn: 276547
|
| |
|
|
| |
llvm-svn: 276546
|
| |
|
|
| |
llvm-svn: 276544
|
| |
|
|
|
|
|
| |
That paper also has changes to any/optional but those will
be implemented later.
llvm-svn: 276537
|
| |
|
|
|
|
| |
clang/apple-clang.
llvm-svn: 276200
|
| |
|
|
|
|
|
| |
The test I originally checked in only worked with ToT Clang. This patch
updates the test so that it works as far back as 3.5.
llvm-svn: 276093
|
| |
|
|
|
|
|
| |
There is a bug in Clang's __is_constructible builtin that causes it
to return true for function types; ex [T = void()].
llvm-svn: 276092
|
| |
|
|
| |
llvm-svn: 276091
|
| |
|
|
|
|
|
| |
The previous implementation relied highly on specializations to handle
special cases. This new implementation lets the compiler do the work when possible.
llvm-svn: 276084
|
| |
|
|
| |
llvm-svn: 275753
|
| |
|
|
| |
llvm-svn: 275748
|
| |
|
|
|
|
|
|
|
|
| |
This patch upgrades <tuple> to be C++17 compliant by implementing:
* tuple_size_v: This was forgotten when implementing the other _v traits.
* std::apply: This was added via LFTS v1 in p0220r1.
* std::make_from_tuple: This was added in p0209r2.
llvm-svn: 275745
|
| |
|
|
| |
llvm-svn: 275211
|
| |
|
|
|
|
| |
is part of LWG#2582
llvm-svn: 275184
|
| |
|
|
| |
llvm-svn: 275094
|
| |
|
|
| |
llvm-svn: 274882
|
| |
|
|
|
|
| |
http://lab.llvm.org:8080/green/job/clang-stage1-cmake-RA-expensive/244/
llvm-svn: 274651
|
| |
|
|
|
|
| |
no more
llvm-svn: 274605
|
| |
|
|
| |
llvm-svn: 274422
|
| |
|
|
| |
llvm-svn: 274418
|
| |
|
|
| |
llvm-svn: 274414
|
| |
|
|
| |
llvm-svn: 274413
|
| |
|
|
|
|
|
|
|
|
| |
This patch attempts to improve the QoI of std::tuples tuple_element and
__make_tuple_types helpers. Previously they required O(N) instantiations,
one for every element in the tuple
The new implementations are O(1) after __tuple_indices<Id...> is created.
llvm-svn: 274330
|
| |
|
|
| |
llvm-svn: 274206
|
| |
|
|
|
|
|
|
|
|
| |
This patch adds the weak_type typedef in shared_ptr. It is available in
C++17 and newer.
This patch also updates the _LIBCPP_STD_VER and TEST_STD_VER macros to
have the value of 16, since 2016 is the current year.
llvm-svn: 273839
|
| |
|
|
| |
llvm-svn: 273837
|
| |
|
|
| |
llvm-svn: 273836
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
See https://llvm.org/bugs/show_bug.cgi?id=27115
The problem was that the conversion from
'const enable_shared_from_this<T>*' to 'const T*' didn't work if
T inherited enable_shared_from_this as a virtual base class. The fix
is to take the original pointer passed to shared_ptr's constructor in the
__enable_weak_this method and perform an upcast to 'const T*' instead of
performing a downcast from the enable_shared_from_this base.
llvm-svn: 273835
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch makes the bind placeholders in std::placeholders both (1) const and
(2) constexpr (See below).
This is technically a breaking change for any code using the placeholders
outside of std::bind and depending on them being non-const. However I don't
think this will break any real world code.
(1) Previously the placeholders were non-const extern globals in all
dialects. This patch changes these extern globals to be const in all dialects.
Since the cv-qualifiers don't participate in name mangling for globals this
is an ABI compatible change.
(2) Make the placeholders constexpr in C++11 and beyond. Although LWG 2488 only
applies to C++17 I don't see any reason not to backport this change.
llvm-svn: 273824
|
| |
|
|
| |
llvm-svn: 273379
|