| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 273368
|
|
|
|
| |
llvm-svn: 273367
|
|
|
|
| |
llvm-svn: 273362
|
|
|
|
| |
llvm-svn: 273357
|
|
|
|
| |
llvm-svn: 273354
|
|
|
|
| |
llvm-svn: 273353
|
|
|
|
| |
llvm-svn: 273348
|
|
|
|
|
|
| |
STL@microsoft.com
llvm-svn: 273345
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
some cases.
Libc++ has to deduce the 'allocator_arg_t' parameter as 'AllocArgT' for the
following constructor:
template <class Alloc> tuple(allocator_arg_t, Alloc const&)
Previously libc++ has tried to support tags derived from 'allocator_arg_t' by
using 'is_base_of<AllocArgT, allocator_arg_t>'. However this breaks whenever a
2-tuple contains a reference to an incomplete type as its first parameter.
See https://llvm.org/bugs/show_bug.cgi?id=27684
llvm-svn: 273334
|
|
|
|
|
|
| |
warnings enabled
llvm-svn: 272822
|
|
|
|
| |
llvm-svn: 272744
|
|
|
|
| |
llvm-svn: 272722
|