diff options
| author | Eric Fiselier <eric@efcs.ca> | 2016-10-16 02:51:50 +0000 |
|---|---|---|
| committer | Eric Fiselier <eric@efcs.ca> | 2016-10-16 02:51:50 +0000 |
| commit | 50253ed1c67b75c71c8ec2d24ed915c032b11822 (patch) | |
| tree | 95aa7eb8def3b368a026bf4ff96322688bad8582 /libcxx/test/std/utilities | |
| parent | 9c737fddba93bce4127dbed4fa2a4440414c1afb (diff) | |
| download | bcm5719-llvm-50253ed1c67b75c71c8ec2d24ed915c032b11822.tar.gz bcm5719-llvm-50253ed1c67b75c71c8ec2d24ed915c032b11822.zip | |
Update issue status for LWG 2744
llvm-svn: 284322
Diffstat (limited to 'libcxx/test/std/utilities')
4 files changed, 25 insertions, 17 deletions
diff --git a/libcxx/test/std/utilities/any/any.class/any.assign/copy.pass.cpp b/libcxx/test/std/utilities/any/any.class/any.assign/copy.pass.cpp index fc76a2d8b95..eba9bc6d5fe 100644 --- a/libcxx/test/std/utilities/any/any.class/any.assign/copy.pass.cpp +++ b/libcxx/test/std/utilities/any/any.class/any.assign/copy.pass.cpp @@ -153,7 +153,7 @@ void test_copy_assign_throws() assert(Tp::count == 1); assertEmpty<Tp>(lhs); - assertContains<Tp>(rhs); + assertContains<Tp>(rhs, 1); } { any lhs((small(2))); @@ -166,7 +166,7 @@ void test_copy_assign_throws() assert(small::count == 1); assert(Tp::count == 1); assertContains<small>(lhs, 2); - assertContains<Tp>(rhs); + assertContains<Tp>(rhs, 1); } { any lhs((large(2))); @@ -179,7 +179,7 @@ void test_copy_assign_throws() assert(large::count == 1); assert(Tp::count == 1); assertContains<large>(lhs, 2); - assertContains<Tp>(rhs); + assertContains<Tp>(rhs, 1); } #endif } diff --git a/libcxx/test/std/utilities/any/any.class/any.assign/value.pass.cpp b/libcxx/test/std/utilities/any/any.class/any.assign/value.pass.cpp index cb8dd4ca964..6af48171492 100644 --- a/libcxx/test/std/utilities/any/any.class/any.assign/value.pass.cpp +++ b/libcxx/test/std/utilities/any/any.class/any.assign/value.pass.cpp @@ -172,15 +172,15 @@ void test_assign_throws() { // * std::in_place type. // * Non-copyable types void test_sfinae_constraints() { - { + { // Only the constructors are required to SFINAE on in_place_t using Tag = std::in_place_type_t<int>; using RawTag = std::remove_reference_t<Tag>; - static_assert(!std::is_assignable<std::any, RawTag&&>::value, ""); + static_assert(std::is_assignable<std::any, RawTag&&>::value, ""); } { struct Dummy { Dummy() = delete; }; using T = std::in_place_type_t<Dummy>; - static_assert(!std::is_assignable<std::any, T>::value, ""); + static_assert(std::is_assignable<std::any, T>::value, ""); } { // Test that the ValueType&& constructor SFINAE's away when the diff --git a/libcxx/test/std/utilities/any/any.class/any.cons/value.pass.cpp b/libcxx/test/std/utilities/any/any.class/any.cons/value.pass.cpp index e39f139dadc..24160dcc1de 100644 --- a/libcxx/test/std/utilities/any/any.class/any.cons/value.pass.cpp +++ b/libcxx/test/std/utilities/any/any.class/any.cons/value.pass.cpp @@ -108,17 +108,12 @@ void test_copy_move_value() { // Test that any(ValueType&&) is *never* selected for a std::in_place type. void test_sfinae_constraints() { - using Tag = std::in_place_type_t<int>; -#if defined(__clang__) -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wignored-qualifiers" -#endif - static_assert(std::is_same<Tag, const Tag>::value, ""); -#if defined(__clang__) -#pragma clang diagnostic pop -#endif + using BadTag = std::in_place_type_t<int>; + using OKTag = std::in_place_t; + using OKDecay = std::decay_t<OKTag>; // Test that the tag type is properly handled in SFINAE - Tag t = std::in_place; + BadTag t = std::in_place; + OKTag ot = std::in_place; { std::any a(t); assertContains<int>(a, 0); @@ -128,11 +123,24 @@ void test_sfinae_constraints() { assertContains<int>(a, 0); } { + std::any a(ot); + assertContains<OKDecay>(a, ot); + } + { + OKDecay d = ot; + std::any a(d); + assertContains<OKDecay>(a, ot); + } + { struct Dummy { Dummy() = delete; }; using T = std::in_place_type_t<Dummy>; static_assert(!std::is_constructible<std::any, T>::value, ""); } { + using DecayTag = std::decay_t<BadTag>; + static_assert(!std::is_constructible<std::any, DecayTag>::value, ""); + } + { // Test that the ValueType&& constructor SFINAE's away when the // argument is non-copyable struct NoCopy { diff --git a/libcxx/test/std/utilities/any/any.class/any.modifiers/reset.pass.cpp b/libcxx/test/std/utilities/any/any.class/any.modifiers/reset.pass.cpp index 31648a04e1a..45bc70f7a79 100644 --- a/libcxx/test/std/utilities/any/any.class/any.modifiers/reset.pass.cpp +++ b/libcxx/test/std/utilities/any/any.class/any.modifiers/reset.pass.cpp @@ -53,7 +53,7 @@ int main() { any a(large(1)); assert(large::count == 1); - assertContains<large>(a); + assertContains<large>(a, 1); a.reset(); |

