diff options
author | Howard Hinnant <hhinnant@apple.com> | 2012-02-24 23:32:26 +0000 |
---|---|---|
committer | Howard Hinnant <hhinnant@apple.com> | 2012-02-24 23:32:26 +0000 |
commit | 8d01935c099a03837461808e0d772fa5ac681a10 (patch) | |
tree | 3c1f2435d63471b5ead93b6f1eff04348cd2e776 /libcxx/test | |
parent | 5e1148e31dd57bbb29dd40041a556434fc76fb84 (diff) | |
download | bcm5719-llvm-8d01935c099a03837461808e0d772fa5ac681a10.tar.gz bcm5719-llvm-8d01935c099a03837461808e0d772fa5ac681a10.zip |
Hook up to the new clang __is_trivially_constructible and __is_trivially_assignable traits. Fixes r10925427 and http://llvm.org/bugs/show_bug.cgi?id=12038.
llvm-svn: 151406
Diffstat (limited to 'libcxx/test')
2 files changed, 19 insertions, 11 deletions
diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copy_constructible.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copy_constructible.pass.cpp index 45f63622f85..6bd78ec9e7a 100644 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copy_constructible.pass.cpp +++ b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copy_constructible.pass.cpp @@ -18,8 +18,6 @@ void test_is_trivially_copy_constructible() { static_assert( std::is_trivially_copy_constructible<T>::value, ""); static_assert( std::is_trivially_copy_constructible<const T>::value, ""); - static_assert( std::is_trivially_copy_constructible<volatile T>::value, ""); - static_assert( std::is_trivially_copy_constructible<const volatile T>::value, ""); } template <class T> @@ -27,8 +25,6 @@ void test_has_not_trivial_copy_constructor() { static_assert(!std::is_trivially_copy_constructible<T>::value, ""); static_assert(!std::is_trivially_copy_constructible<const T>::value, ""); - static_assert(!std::is_trivially_copy_constructible<volatile T>::value, ""); - static_assert(!std::is_trivially_copy_constructible<const volatile T>::value, ""); } class Empty diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_trivially_move_constructible.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_trivially_move_constructible.pass.cpp index a4fcbcb09c5..54cb5e853a8 100644 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_trivially_move_constructible.pass.cpp +++ b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_trivially_move_constructible.pass.cpp @@ -17,18 +17,12 @@ template <class T> void test_is_trivially_move_constructible() { static_assert( std::is_trivially_move_constructible<T>::value, ""); - static_assert( std::is_trivially_move_constructible<const T>::value, ""); - static_assert( std::is_trivially_move_constructible<volatile T>::value, ""); - static_assert( std::is_trivially_move_constructible<const volatile T>::value, ""); } template <class T> void test_has_not_trivial_move_constructor() { static_assert(!std::is_trivially_move_constructible<T>::value, ""); - static_assert(!std::is_trivially_move_constructible<const T>::value, ""); - static_assert(!std::is_trivially_move_constructible<volatile T>::value, ""); - static_assert(!std::is_trivially_move_constructible<const volatile T>::value, ""); } class Empty @@ -59,6 +53,20 @@ struct A A(const A&); }; +#if __has_feature(cxx_defaulted_functions) + +struct MoveOnly1 +{ + MoveOnly1(MoveOnly1&&); +}; + +struct MoveOnly2 +{ + MoveOnly2(MoveOnly2&&) = default; +}; + +#endif + int main() { test_has_not_trivial_move_constructor<void>(); @@ -66,7 +74,6 @@ int main() test_has_not_trivial_move_constructor<Abstract>(); test_has_not_trivial_move_constructor<NotEmpty>(); - test_is_trivially_move_constructible<int&>(); test_is_trivially_move_constructible<Union>(); test_is_trivially_move_constructible<Empty>(); test_is_trivially_move_constructible<int>(); @@ -74,4 +81,9 @@ int main() test_is_trivially_move_constructible<int*>(); test_is_trivially_move_constructible<const int*>(); test_is_trivially_move_constructible<bit_zero>(); + +#if __has_feature(cxx_defaulted_functions) + static_assert(!std::is_trivially_move_constructible<MoveOnly1>::value, ""); + static_assert( std::is_trivially_move_constructible<MoveOnly2>::value, ""); +#endif } |