summaryrefslogtreecommitdiffstats
path: root/libcxx/test/std/utilities/variant/variant.variant/variant.assign/move.pass.cpp
diff options
context:
space:
mode:
authorMichael Park <mcypark@gmail.com>2017-06-07 10:22:43 +0000
committerMichael Park <mcypark@gmail.com>2017-06-07 10:22:43 +0000
commita8b057483be7f3aa185e0fc9a3fc38c55c28f34f (patch)
tree1bbb006c58c257014df3664f756364c9f04e9636 /libcxx/test/std/utilities/variant/variant.variant/variant.assign/move.pass.cpp
parenteeb0aad8e4041fcc7baed47f0ca2777fcfddbc34 (diff)
downloadbcm5719-llvm-a8b057483be7f3aa185e0fc9a3fc38c55c28f34f.tar.gz
bcm5719-llvm-a8b057483be7f3aa185e0fc9a3fc38c55c28f34f.zip
Implement LWG 2904.
Summary: - Removed the move-constructibe requirement from copy-assignable. - Updated `__assign_alt` such that we direct initialize if `_Tp` can be `nothrow`-constructible from `_Arg`, or `_Tp`'s move construction can throw. Otherwise, construct a temporary and move it. - Updated the tests to remove the pre-LWG2904 path. Depends on D32671. Reviewers: EricWF, CaseyCarter Reviewed By: EricWF Differential Revision: https://reviews.llvm.org/D33965 llvm-svn: 304891
Diffstat (limited to 'libcxx/test/std/utilities/variant/variant.variant/variant.assign/move.pass.cpp')
-rw-r--r--libcxx/test/std/utilities/variant/variant.variant/variant.assign/move.pass.cpp8
1 files changed, 0 insertions, 8 deletions
diff --git a/libcxx/test/std/utilities/variant/variant.variant/variant.assign/move.pass.cpp b/libcxx/test/std/utilities/variant/variant.variant/variant.assign/move.pass.cpp
index 77c122bf9f9..c410b4b8f3e 100644
--- a/libcxx/test/std/utilities/variant/variant.variant/variant.assign/move.pass.cpp
+++ b/libcxx/test/std/utilities/variant/variant.variant/variant.assign/move.pass.cpp
@@ -183,13 +183,7 @@ void test_move_assignment_sfinae() {
}
{
using V = std::variant<int, CopyOnly>;
-#ifdef _LIBCPP_VERSION // LWG2904
- // variant only provides move assignment when both the move constructor
- // and move assignment operator are well formed.
- static_assert(!std::is_move_assignable<V>::value, "");
-#else // _LIBCPP_VERSION // LWG2904
static_assert(std::is_move_assignable<V>::value, "");
-#endif // _LIBCPP_VERSION // LWG2904
}
{
using V = std::variant<int, NoCopy>;
@@ -232,12 +226,10 @@ void test_move_assignment_sfinae() {
using V = std::variant<int, TrivialCopyNontrivialMove>;
static_assert(!std::is_trivially_move_assignable<V>::value, "");
}
-#ifndef _LIBCPP_VERSION // LWG2904
{
using V = std::variant<int, CopyOnly>;
static_assert(std::is_trivially_move_assignable<V>::value, "");
}
-#endif // _LIBCPP_VERSION // LWG2904
}
void test_move_assignment_empty_empty() {
OpenPOWER on IntegriCloud