| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 276595
|
|
|
|
|
|
|
|
| |
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: 276593
|
|
|
|
|
|
| |
STL@microsoft.com
llvm-svn: 276591
|
|
|
|
|
|
| |
See D21820 for more information (https://reviews.llvm.org/D21820).
llvm-svn: 276590
|
|
|
|
| |
llvm-svn: 276589
|
|
|
|
| |
llvm-svn: 276588
|
|
|
|
| |
llvm-svn: 276587
|
|
|
|
| |
llvm-svn: 276585
|
|
|
|
| |
llvm-svn: 276584
|
|
|
|
| |
llvm-svn: 276583
|
|
|
|
| |
llvm-svn: 276581
|
|
|
|
|
|
| |
STL@microsoft.com
llvm-svn: 276580
|
|
|
|
| |
llvm-svn: 276578
|
|
|
|
|
|
| |
STL@microsoft.com
llvm-svn: 276576
|
|
|
|
| |
llvm-svn: 276548
|
|
|
|
| |
llvm-svn: 276547
|
|
|
|
| |
llvm-svn: 276546
|
|
|
|
| |
llvm-svn: 276545
|
|
|
|
| |
llvm-svn: 276544
|
|
|
|
|
|
|
| |
That paper also has changes to any/optional but those will
be implemented later.
llvm-svn: 276537
|
|
|
|
| |
llvm-svn: 276511
|
|
|
|
| |
llvm-svn: 276273
|
|
|
|
| |
llvm-svn: 276272
|
|
|
|
|
|
| |
Also comment out a _LIBCPP_ASSERT that gcc4.9 was complaining about. Will revisit that later.
llvm-svn: 276241
|
|
|
|
|
|
| |
Reviewed as https://reviews.llvm.org/D21459
llvm-svn: 276238
|
|
|
|
| |
llvm-svn: 276230
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
| |
The functions arg, conj, imag, norm, proj, and real have additional overloads
for arguments of integral or floating point types. However these overloads should
not allow conversions to the integral/floating point types, only exact matches.
This patch constrains these functions so they no longer allow conversions.
llvm-svn: 276067
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This patch attempts to fix the undefined behavior in __tree by changing the node pointer types used throughout. The pointer types are changed for raw pointers in the current ABI and for fancy pointers in ABI V2 (since the fancy pointer types may not be ABI compatible).
The UB in `__tree` arises because tree downcasts the embedded end node and then deferences that pointer. Currently there are 3 node types in __tree.
* `__tree_end_node` which contains the `__left_` pointer. This node is embedded within the container.
* `__tree_node_base` which contains `__right_`, `__parent_` and `__is_black`. This node is used throughout the tree rebalancing algorithms.
* `__tree_node` which contains `__value_`.
Currently `__tree` stores the start of the tree, `__begin_node_`, as a pointer to a `__tree_node`. Additionally the iterators store their position as a pointer to a `__tree_node`. In both of these cases the pointee can be the end node. This is fixed by changing them to store `__tree_end_node` pointers instead.
To make this change I introduced an `__iter_pointer` typedef which is defined to be a pointer to either `__tree_end_node` in the new ABI or `__tree_node` in the current one.
Both `__tree::__begin_node_` and iterator pointers are now stored as `__iter_pointers`.
The other situation where `__tree_end_node` is stored as the wrong type is in `__tree_node_base::__parent_`. Currently `__left_`, `__right_`, and `__parent_` are all `__tree_node_base` pointers. Since the end node will only be stored in `__parent_` the fix is to change `__parent_` to be a pointer to `__tree_end_node`.
To make this change I introduced a `__parent_pointer` typedef which is defined to be a pointer to either `__tree_end_node` in the new ABI or `__tree_node_base` in the current one.
Note that in the new ABI `__iter_pointer` and `__parent_pointer` are the same type (but not in the old one). The confusion between these two types is unfortunate but it was the best solution I could come up with that maintains the ABI.
The typedef changes force a ton of explicit type casts to correct pointer types and to make current code compatible with both the old and new pointer typedefs. This is the bulk of the change and it's really messy. Unfortunately I don't know how to avoid it.
Please let me know what you think.
Reviewers: howard.hinnant, mclow.lists
Subscribers: howard.hinnant, bbannier, cfe-commits
Differential Revision: https://reviews.llvm.org/D20786
llvm-svn: 276003
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Constructing a std::locale object from an empty string selects the language
from the current environment variables. If the environment variables name
a locale that doesn't exist, or isn't installed, then the construction of
facets using that locale may throw.
This patch removes tests that use 'std::locale l("")'.
The optimal solution would be to manually set the environment variables
in the test. Unfortunately there is no portable way to do this.
llvm-svn: 275772
|
|
|
|
|
|
|
|
|
| |
man page for mkdir says: "If the parent directory has the set-group-ID bit set,
then so will the newly created directory."
Differential Revision: https://reviews.llvm.org/D22265
llvm-svn: 275760
|
|
|
|
| |
llvm-svn: 275754
|
|
|
|
| |
llvm-svn: 275753
|
|
|
|
| |
llvm-svn: 275751
|
|
|
|
| |
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: 275732
|
|
|
|
| |
llvm-svn: 275211
|
|
|
|
|
|
| |
As discussed in http://reviews.llvm.org/D22073
llvm-svn: 275210
|
|
|
|
|
|
| |
is part of LWG#2582
llvm-svn: 275184
|
|
|
|
|
|
| |
Fixes PR#28412. Thanks to Jonathan Wakely for the report.
llvm-svn: 275105
|
|
|
|
| |
llvm-svn: 275094
|
|
|
|
| |
llvm-svn: 274882
|
|
|
|
|
|
| |
http://lab.llvm.org:8080/green/job/clang-stage1-cmake-RA-expensive/244/
llvm-svn: 274651
|