summaryrefslogtreecommitdiffstats
path: root/libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_assignable.pass.cpp
diff options
context:
space:
mode:
authorMarshall Clow <mclow.lists@gmail.com>2013-07-04 00:10:01 +0000
committerMarshall Clow <mclow.lists@gmail.com>2013-07-04 00:10:01 +0000
commit5b2ef2b1a6d6d29c590c8fee1fac0d49068d9b41 (patch)
tree22ba0d875869da7d383d4edb9b4d3c5a3f860bfa /libcxx/test/utilities/meta/meta.unary/meta.unary.prop/is_assignable.pass.cpp
parentf33ec531fa59f8ad1ae9e90c3df9b29b8cccda4d (diff)
downloadbcm5719-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.cpp37
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> ();
}
OpenPOWER on IntegriCloud