diff options
author | Marshall Clow <mclow.lists@gmail.com> | 2013-07-04 00:10:01 +0000 |
---|---|---|
committer | Marshall Clow <mclow.lists@gmail.com> | 2013-07-04 00:10:01 +0000 |
commit | 5b2ef2b1a6d6d29c590c8fee1fac0d49068d9b41 (patch) | |
tree | 22ba0d875869da7d383d4edb9b4d3c5a3f860bfa /libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_assignable.pass.cpp | |
parent | f33ec531fa59f8ad1ae9e90c3df9b29b8cccda4d (diff) | |
download | bcm5719-llvm-5b2ef2b1a6d6d29c590c8fee1fac0d49068d9b41.tar.gz bcm5719-llvm-5b2ef2b1a6d6d29c590c8fee1fac0d49068d9b41.zip |
Patch for N3655 (Transformation type traits) with Howard's additions
llvm-svn: 185597
Diffstat (limited to 'libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_assignable.pass.cpp')
-rw-r--r-- | libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_assignable.pass.cpp | 37 |
1 files changed, 26 insertions, 11 deletions
diff --git a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_assignable.pass.cpp b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_assignable.pass.cpp index e37987c54c5..8c21c759fa1 100644 --- a/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_assignable.pass.cpp +++ b/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_assignable.pass.cpp @@ -22,17 +22,32 @@ struct B void operator=(A); }; +template <class T, class U> +void test_is_assignable() +{ + static_assert(( std::is_assignable<T, U>::value), ""); +} + +template <class T, class U> +void test_is_not_assignable() +{ + static_assert((!std::is_assignable<T, U>::value), ""); +} + int main() { - static_assert(( std::is_assignable<int&, int&>::value), ""); - static_assert(( std::is_assignable<int&, int>::value), ""); - static_assert((!std::is_assignable<int, int&>::value), ""); - static_assert((!std::is_assignable<int, int>::value), ""); - static_assert(( std::is_assignable<int&, double>::value), ""); - static_assert(( std::is_assignable<B, A>::value), ""); - static_assert((!std::is_assignable<A, B>::value), ""); - static_assert((!std::is_assignable<void, const void>::value), ""); - static_assert((!std::is_assignable<const void, const void>::value), ""); - static_assert(( std::is_assignable<void*&, void*>::value), ""); - static_assert((!std::is_assignable<int(), int>::value), ""); + test_is_assignable<int&, int&> (); + test_is_assignable<int&, int> (); + test_is_assignable<int&, double> (); + test_is_assignable<B, A> (); + test_is_assignable<void*&, void*> (); + +#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES + test_is_not_assignable<int, int&> (); + test_is_not_assignable<int, int> (); +#endif + test_is_not_assignable<A, B> (); + test_is_not_assignable<void, const void> (); + test_is_not_assignable<const void, const void> (); + test_is_not_assignable<int(), int> (); } |