llvm-project/libcxx
Louis Dionne a0839b14df [libc++] Fix tuple assignment from types derived from a tuple-like
The implementation of tuple's constructors and assignment operators
currently diverges from the way the Standard specifies them, which leads
to subtle cases where the behavior is not as specified. In particular, a
class derived from a tuple-like type (e.g. pair) can't be assigned to a
tuple with corresponding members, when it should. This commit re-implements
the assignment operators (BUT NOT THE CONSTRUCTORS) in a way much closer
to the specification to get rid of this bug. Most of the tests have been
stolen from Eric's patch https://reviews.llvm.org/D27606.

As a fly-by improvement, tests for noexcept correctness have been added
to all overloads of operator=. We should tackle the same issue for the
tuple constructors in a future patch - I'm just trying to make progress
on fixing this long-standing bug.

PR17550
rdar://15837420

Differential Revision: https://reviews.llvm.org/D50106
2021-02-22 14:52:18 -05:00
..
benchmarks Revert "[libc++] Require C++20 to build the benchmarks." 2021-02-09 19:59:34 +01:00
cmake [SystemZ][ZOS] Prefer -nostdlib++ as opposed to -nodefaultlibs when building c++ libraries 2021-02-16 18:42:14 +00:00
docs [libc++][nfc] SFINAE on pair/tuple assignment operators: LWG 2729. 2021-02-19 13:25:34 -08:00
include [libc++] Fix tuple assignment from types derived from a tuple-like 2021-02-22 14:52:18 -05:00
lib [libc++] Implement format_error. 2021-01-28 18:02:53 +01:00
src [libcxx] Rename a method in PathParser for clarity. NFC. 2021-02-20 10:20:11 +02:00
test [libc++] Fix tuple assignment from types derived from a tuple-like 2021-02-22 14:52:18 -05:00
utils [libc++] Turn off clang-format for auto-generated version header. NFC. 2021-02-19 17:26:16 +01:00
www [Branch-Rename] Fix some links 2021-02-01 16:43:21 +05:30
.clang-format
.gitignore [libcxx] Fix .gitignore to not exclude test directories 2020-03-25 17:52:23 -07:00
CMakeLists.txt [libcxx] Enable filesystem by default for mingw targets 2021-02-20 01:09:10 +02:00
CREDITS.TXT [libcxx] Adds [concept.same] 2020-04-08 18:00:13 -04:00
LICENSE.TXT Fix typos throughout the license files that somehow I and my reviewers 2019-01-21 09:52:34 +00:00
TODO.TXT [libc++][NFC] Remove outdated TODO item 2020-07-08 13:04:33 -04:00
appveyor-reqs-install.cmd Attempt to upgrade compiler used by appveyor builds 2019-04-03 20:40:01 +00:00
appveyor.yml disable appveyor config for MSVC 2015 2019-04-03 20:36:51 +00:00