diff options
| author | Marshall Clow <mclow.lists@gmail.com> | 2014-12-09 15:07:42 +0000 |
|---|---|---|
| committer | Marshall Clow <mclow.lists@gmail.com> | 2014-12-09 15:07:42 +0000 |
| commit | 8ad78e905f28d72a9122302e381503159a208485 (patch) | |
| tree | 73198a934efc2869b6d2836d9795cc8f2eb85a67 /libcxx/test/utilities/optional/optional.object/optional.object.assign/move.pass.cpp | |
| parent | b0a9b703739aa0e0661fec9181863cd6745b63c9 (diff) | |
| download | bcm5719-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.cpp | 103 |
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 -} |

