diff options
| -rw-r--r-- | libcxx/test/utilities/utility/forward/move_if_noexcept.pass.cpp | 14 |
1 files changed, 11 insertions, 3 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 index a13336e9ec6..8a0eba012a8 100644 --- a/libcxx/test/utilities/utility/forward/move_if_noexcept.pass.cpp +++ b/libcxx/test/utilities/utility/forward/move_if_noexcept.pass.cpp @@ -12,7 +12,7 @@ // template <class T> // typename conditional // < -// !has_nothrow_move_constructor<T>::value && has_copy_constructor<T>::value, +// !is_nothrow_move_constructible<T>::value && is_copy_constructible<T>::value, // const T&, // T&& // >::type @@ -32,24 +32,32 @@ public: #endif }; +struct legacy +{ + legacy() {} + legacy(const legacy&); +}; + int main() { int i = 0; const int ci = 0; + legacy l; A a; const A ca; #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES 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), ""); + static_assert((std::is_same<decltype(std::move_if_noexcept(a)), A&&>::value), ""); + static_assert((std::is_same<decltype(std::move_if_noexcept(ca)), const A&&>::value), ""); #else // _LIBCPP_HAS_NO_RVALUE_REFERENCES 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 // _LIBCPP_HAS_NO_RVALUE_REFERENCES + static_assert((std::is_same<decltype(std::move_if_noexcept(l)), const legacy&>::value), ""); } |

