summaryrefslogtreecommitdiffstats
path: root/libcxx/test/utilities/utility/forward/move_if_noexcept.pass.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libcxx/test/utilities/utility/forward/move_if_noexcept.pass.cpp')
-rw-r--r--libcxx/test/utilities/utility/forward/move_if_noexcept.pass.cpp55
1 files changed, 55 insertions, 0 deletions
diff --git a/libcxx/test/utilities/utility/forward/move_if_noexcept.pass.cpp b/libcxx/test/utilities/utility/forward/move_if_noexcept.pass.cpp
new file mode 100644
index 00000000000..1646b20d299
--- /dev/null
+++ b/libcxx/test/utilities/utility/forward/move_if_noexcept.pass.cpp
@@ -0,0 +1,55 @@
+//===----------------------------------------------------------------------===//
+//
+// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// <utility>
+
+// template <class T>
+// typename conditional
+// <
+// !has_nothrow_move_constructor<T>::value && has_copy_constructor<T>::value,
+// const T&,
+// T&&
+// >::type
+// move_if_noexcept(T& x);
+
+#include <utility>
+
+class A
+{
+ A(const A&);
+ A& operator=(const A&);
+public:
+
+ A() {}
+#ifdef _LIBCPP_MOVE
+ A(A&&) {}
+#endif
+};
+
+int main()
+{
+ int i = 0;
+ const int ci = 0;
+
+ A a;
+ const A ca;
+
+#ifdef _LIBCPP_MOVE
+ static_assert((std::is_same<decltype(std::move_if_noexcept(i)), int&&>::value), "");
+ static_assert((std::is_same<decltype(std::move_if_noexcept(ci)), const int&&>::value), "");
+ static_assert((std::is_same<decltype(std::move_if_noexcept(a)), const A&>::value), "");
+ static_assert((std::is_same<decltype(std::move_if_noexcept(ca)), const A&>::value), "");
+#else
+ static_assert((std::is_same<decltype(std::move_if_noexcept(i)), const int>::value), "");
+ static_assert((std::is_same<decltype(std::move_if_noexcept(ci)), const int>::value), "");
+ static_assert((std::is_same<decltype(std::move_if_noexcept(a)), const A>::value), "");
+ static_assert((std::is_same<decltype(std::move_if_noexcept(ca)), const A>::value), "");
+#endif
+
+}
OpenPOWER on IntegriCloud