diff options
| author | Eric Fiselier <eric@efcs.ca> | 2016-10-12 06:48:31 +0000 |
|---|---|---|
| committer | Eric Fiselier <eric@efcs.ca> | 2016-10-12 06:48:31 +0000 |
| commit | fc647db3ee8215ab2fa5f7cdea8d327c2faa768f (patch) | |
| tree | e81dc360c9c06b9a32303243d77c4c7325f8897f /libcxx/test/std/utilities/optional/optional.object/optional.object.assign/copy.pass.cpp | |
| parent | 6ee4001cc957acac39181b68193e1414c3163698 (diff) | |
| download | bcm5719-llvm-fc647db3ee8215ab2fa5f7cdea8d327c2faa768f.tar.gz bcm5719-llvm-fc647db3ee8215ab2fa5f7cdea8d327c2faa768f.zip | |
Revert Add <optional>. Will recommit with better commit message
llvm-svn: 283978
Diffstat (limited to 'libcxx/test/std/utilities/optional/optional.object/optional.object.assign/copy.pass.cpp')
| -rw-r--r-- | libcxx/test/std/utilities/optional/optional.object/optional.object.assign/copy.pass.cpp | 102 |
1 files changed, 0 insertions, 102 deletions
diff --git a/libcxx/test/std/utilities/optional/optional.object/optional.object.assign/copy.pass.cpp b/libcxx/test/std/utilities/optional/optional.object/optional.object.assign/copy.pass.cpp deleted file mode 100644 index 98c90aa1d4f..00000000000 --- a/libcxx/test/std/utilities/optional/optional.object/optional.object.assign/copy.pass.cpp +++ /dev/null @@ -1,102 +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. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11, c++14 -// <optional> - -// optional<T>& operator=(const optional<T>& rhs); - -#include <optional> -#include <type_traits> -#include <cassert> - -#include "test_macros.h" -#include "archetypes.hpp" - -using std::optional; - -struct X -{ - static bool throw_now; - - X() = default; - X(const X&) - { - if (throw_now) - TEST_THROW(6); - } -}; - -bool X::throw_now = false; - -template <class Tp> -constexpr bool assign_empty(optional<Tp>&& lhs) { - const optional<Tp> rhs; - lhs = rhs; - return !lhs.has_value() && !rhs.has_value(); -} - -template <class Tp> -constexpr bool assign_value(optional<Tp>&& lhs) { - const optional<Tp> rhs(101); - lhs = rhs; - return lhs.has_value() && rhs.has_value() && *lhs == *rhs; -} - -int main() -{ - { - using O = optional<int>; - LIBCPP_STATIC_ASSERT(assign_empty(O{42}), ""); - LIBCPP_STATIC_ASSERT(assign_value(O{42}), ""); - assert(assign_empty(O{42})); - assert(assign_value(O{42})); - } - { - using O = optional<TrivialTestTypes::TestType>; - LIBCPP_STATIC_ASSERT(assign_empty(O{42}), ""); - LIBCPP_STATIC_ASSERT(assign_value(O{42}), ""); - assert(assign_empty(O{42})); - assert(assign_value(O{42})); - } - { - using O = optional<TestTypes::TestType>; - assert(assign_empty(O{42})); - assert(assign_value(O{42})); - } - { - using T = TestTypes::TestType; - T::reset(); - optional<T> opt(3); - const optional<T> opt2; - assert(T::alive == 1); - opt = opt2; - assert(T::alive == 0); - assert(!opt2.has_value()); - assert(!opt.has_value()); - } -#ifndef TEST_HAS_NO_EXCEPTIONS - { - optional<X> opt; - optional<X> opt2(X{}); - assert(static_cast<bool>(opt2) == true); - try - { - X::throw_now = true; - opt = opt2; - assert(false); - } - catch (int i) - { - assert(i == 6); - assert(static_cast<bool>(opt) == false); - } - } -#endif -} |

