summaryrefslogtreecommitdiffstats
path: root/libcxx/test/utilities/optional/optional.object/optional.object.assign/move.pass.cpp
diff options
context:
space:
mode:
authorMarshall Clow <mclow.lists@gmail.com>2014-12-09 15:07:42 +0000
committerMarshall Clow <mclow.lists@gmail.com>2014-12-09 15:07:42 +0000
commit8ad78e905f28d72a9122302e381503159a208485 (patch)
tree73198a934efc2869b6d2836d9795cc8f2eb85a67 /libcxx/test/utilities/optional/optional.object/optional.object.assign/move.pass.cpp
parentb0a9b703739aa0e0661fec9181863cd6745b63c9 (diff)
downloadbcm5719-llvm-8ad78e905f28d72a9122302e381503159a208485.tar.gz
bcm5719-llvm-8ad78e905f28d72a9122302e381503159a208485.zip
Move the optional tests into test/experimental. They were put into test/utilities because optional was going to be part of C++14, and then was pulled and put into the Library Fundamentals TS instead. No funcitonality change here; just moving files around.
llvm-svn: 223778
Diffstat (limited to 'libcxx/test/utilities/optional/optional.object/optional.object.assign/move.pass.cpp')
-rw-r--r--libcxx/test/utilities/optional/optional.object/optional.object.assign/move.pass.cpp103
1 files changed, 0 insertions, 103 deletions
diff --git a/libcxx/test/utilities/optional/optional.object/optional.object.assign/move.pass.cpp b/libcxx/test/utilities/optional/optional.object/optional.object.assign/move.pass.cpp
deleted file mode 100644
index d27313dad42..00000000000
--- a/libcxx/test/utilities/optional/optional.object/optional.object.assign/move.pass.cpp
+++ /dev/null
@@ -1,103 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-// <optional>
-
-// optional<T>& operator=(optional<T>&& rhs)
-// noexcept(is_nothrow_move_assignable<T>::value &&
-// is_nothrow_move_constructible<T>::value);
-
-#include <experimental/optional>
-#include <type_traits>
-#include <cassert>
-
-#if _LIBCPP_STD_VER > 11
-
-using std::experimental::optional;
-
-struct X
-{
- static bool throw_now;
-
- X() = default;
- X(X&&)
- {
- if (throw_now)
- throw 6;
- }
- X& operator=(X&&) noexcept
- {
- return *this;
- }
-};
-
-struct Y {};
-
-bool X::throw_now = false;
-
-#endif // _LIBCPP_STD_VER > 11
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- {
- static_assert(std::is_nothrow_move_assignable<optional<int>>::value, "");
- optional<int> opt;
- constexpr optional<int> opt2;
- opt = std::move(opt2);
- static_assert(static_cast<bool>(opt2) == false, "");
- assert(static_cast<bool>(opt) == static_cast<bool>(opt2));
- }
- {
- optional<int> opt;
- constexpr optional<int> opt2(2);
- opt = std::move(opt2);
- static_assert(static_cast<bool>(opt2) == true, "");
- static_assert(*opt2 == 2, "");
- assert(static_cast<bool>(opt) == static_cast<bool>(opt2));
- assert(*opt == *opt2);
- }
- {
- optional<int> opt(3);
- constexpr optional<int> opt2;
- opt = std::move(opt2);
- static_assert(static_cast<bool>(opt2) == false, "");
- assert(static_cast<bool>(opt) == static_cast<bool>(opt2));
- }
- {
- optional<int> opt(3);
- constexpr optional<int> opt2(2);
- opt = std::move(opt2);
- static_assert(static_cast<bool>(opt2) == true, "");
- static_assert(*opt2 == 2, "");
- assert(static_cast<bool>(opt) == static_cast<bool>(opt2));
- assert(*opt == *opt2);
- }
- {
- static_assert(!std::is_nothrow_move_assignable<optional<X>>::value, "");
- optional<X> opt;
- optional<X> opt2(X{});
- assert(static_cast<bool>(opt2) == true);
- try
- {
- X::throw_now = true;
- opt = std::move(opt2);
- assert(false);
- }
- catch (int i)
- {
- assert(i == 6);
- assert(static_cast<bool>(opt) == false);
- }
- }
- {
- static_assert(std::is_nothrow_move_assignable<optional<Y>>::value, "");
- }
-#endif // _LIBCPP_STD_VER > 11
-}
OpenPOWER on IntegriCloud