summaryrefslogtreecommitdiffstats
path: root/libcxx/test/experimental/optional
diff options
context:
space:
mode:
Diffstat (limited to 'libcxx/test/experimental/optional')
-rw-r--r--libcxx/test/experimental/optional/optional.bad_optional_access/default.pass.cpp23
-rw-r--r--libcxx/test/experimental/optional/optional.bad_optional_access/derive.pass.cpp25
-rw-r--r--libcxx/test/experimental/optional/optional.comp_with_t/equal.pass.cpp58
-rw-r--r--libcxx/test/experimental/optional/optional.comp_with_t/greater.pass.cpp61
-rw-r--r--libcxx/test/experimental/optional/optional.comp_with_t/greater_equal.pass.cpp61
-rw-r--r--libcxx/test/experimental/optional/optional.comp_with_t/less_equal.pass.cpp61
-rw-r--r--libcxx/test/experimental/optional/optional.comp_with_t/less_than.pass.cpp61
-rw-r--r--libcxx/test/experimental/optional/optional.comp_with_t/not_equal.pass.cpp58
-rw-r--r--libcxx/test/experimental/optional/optional.defs/tested_elsewhere.pass.cpp12
-rw-r--r--libcxx/test/experimental/optional/optional.general/nothing_to_do.pass.cpp12
-rw-r--r--libcxx/test/experimental/optional/optional.hash/hash.pass.cpp47
-rw-r--r--libcxx/test/experimental/optional/optional.inplace/in_place_t.pass.cpp42
-rw-r--r--libcxx/test/experimental/optional/optional.nullops/equal.pass.cpp41
-rw-r--r--libcxx/test/experimental/optional/optional.nullops/greater.pass.cpp41
-rw-r--r--libcxx/test/experimental/optional/optional.nullops/greater_equal.pass.cpp41
-rw-r--r--libcxx/test/experimental/optional/optional.nullops/less_equal.pass.cpp41
-rw-r--r--libcxx/test/experimental/optional/optional.nullops/less_than.pass.cpp41
-rw-r--r--libcxx/test/experimental/optional/optional.nullops/not_equal.pass.cpp41
-rw-r--r--libcxx/test/experimental/optional/optional.nullopt/nullopt_t.pass.cpp43
-rw-r--r--libcxx/test/experimental/optional/optional.object/optional.object.assign/assign_value.pass.cpp72
-rw-r--r--libcxx/test/experimental/optional/optional.object/optional.object.assign/copy.pass.cpp90
-rw-r--r--libcxx/test/experimental/optional/optional.object/optional.object.assign/emplace.pass.cpp148
-rw-r--r--libcxx/test/experimental/optional/optional.object/optional.object.assign/emplace_initializer_list.pass.cpp116
-rw-r--r--libcxx/test/experimental/optional/optional.object/optional.object.assign/move.pass.cpp103
-rw-r--r--libcxx/test/experimental/optional/optional.object/optional.object.assign/nullopt_t.pass.cpp67
-rw-r--r--libcxx/test/experimental/optional/optional.object/optional.object.ctor/const_T.pass.cpp117
-rw-r--r--libcxx/test/experimental/optional/optional.object/optional.object.ctor/copy.pass.cpp124
-rw-r--r--libcxx/test/experimental/optional/optional.object/optional.object.ctor/default.pass.cpp67
-rw-r--r--libcxx/test/experimental/optional/optional.object/optional.object.ctor/in_place_t.pass.cpp145
-rw-r--r--libcxx/test/experimental/optional/optional.object/optional.object.ctor/initializer_list.pass.cpp126
-rw-r--r--libcxx/test/experimental/optional/optional.object/optional.object.ctor/move.pass.cpp124
-rw-r--r--libcxx/test/experimental/optional/optional.object/optional.object.ctor/nullopt_t.pass.cpp68
-rw-r--r--libcxx/test/experimental/optional/optional.object/optional.object.ctor/rvalue_T.pass.cpp110
-rw-r--r--libcxx/test/experimental/optional/optional.object/optional.object.dtor/dtor.pass.cpp59
-rw-r--r--libcxx/test/experimental/optional/optional.object/optional.object.observe/bool.pass.cpp32
-rw-r--r--libcxx/test/experimental/optional/optional.object/optional.object.observe/dereference.pass.cpp49
-rw-r--r--libcxx/test/experimental/optional/optional.object/optional.object.observe/dereference_const.pass.cpp57
-rw-r--r--libcxx/test/experimental/optional/optional.object/optional.object.observe/op_arrow.pass.cpp52
-rw-r--r--libcxx/test/experimental/optional/optional.object/optional.object.observe/op_arrow_const.pass.cpp67
-rw-r--r--libcxx/test/experimental/optional/optional.object/optional.object.observe/value.pass.cpp53
-rw-r--r--libcxx/test/experimental/optional/optional.object/optional.object.observe/value_const.fail.cpp40
-rw-r--r--libcxx/test/experimental/optional/optional.object/optional.object.observe/value_const.pass.cpp58
-rw-r--r--libcxx/test/experimental/optional/optional.object/optional.object.observe/value_or.pass.cpp71
-rw-r--r--libcxx/test/experimental/optional/optional.object/optional.object.observe/value_or_const.pass.cpp82
-rw-r--r--libcxx/test/experimental/optional/optional.object/optional.object.swap/swap.pass.cpp306
-rw-r--r--libcxx/test/experimental/optional/optional.object/optional_const_void.fail.cpp25
-rw-r--r--libcxx/test/experimental/optional/optional.object/optional_not_destructible.fail.cpp35
-rw-r--r--libcxx/test/experimental/optional/optional.object/optional_not_noexcept_destructible.fail.cpp34
-rw-r--r--libcxx/test/experimental/optional/optional.object/optional_void.fail.cpp25
-rw-r--r--libcxx/test/experimental/optional/optional.object/types.pass.cpp43
-rw-r--r--libcxx/test/experimental/optional/optional.relops/equal.pass.cpp79
-rw-r--r--libcxx/test/experimental/optional/optional.relops/greater_equal.pass.cpp75
-rw-r--r--libcxx/test/experimental/optional/optional.relops/greater_than.pass.cpp75
-rw-r--r--libcxx/test/experimental/optional/optional.relops/less_equal.pass.cpp75
-rw-r--r--libcxx/test/experimental/optional/optional.relops/less_than.pass.cpp75
-rw-r--r--libcxx/test/experimental/optional/optional.relops/not_equal.pass.cpp79
-rw-r--r--libcxx/test/experimental/optional/optional.specalg/make_optional.pass.cpp50
-rw-r--r--libcxx/test/experimental/optional/optional.specalg/swap.pass.cpp305
-rw-r--r--libcxx/test/experimental/optional/optional.syn/optional_const_in_place_t.fail.cpp28
-rw-r--r--libcxx/test/experimental/optional/optional.syn/optional_const_lvalue_ref.fail.cpp26
-rw-r--r--libcxx/test/experimental/optional/optional.syn/optional_const_nullopt_t.fail.cpp28
-rw-r--r--libcxx/test/experimental/optional/optional.syn/optional_in_place_t.fail.cpp28
-rw-r--r--libcxx/test/experimental/optional/optional.syn/optional_includes_initializer_list.pass.cpp23
-rw-r--r--libcxx/test/experimental/optional/optional.syn/optional_lvalue_ref.fail.cpp26
-rw-r--r--libcxx/test/experimental/optional/optional.syn/optional_nullopt_t.fail.cpp28
-rw-r--r--libcxx/test/experimental/optional/optional.syn/optional_rvalue_ref.fail.cpp26
-rw-r--r--libcxx/test/experimental/optional/version.pass.cpp20
67 files changed, 0 insertions, 4421 deletions
diff --git a/libcxx/test/experimental/optional/optional.bad_optional_access/default.pass.cpp b/libcxx/test/experimental/optional/optional.bad_optional_access/default.pass.cpp
deleted file mode 100644
index cecf98a3518..00000000000
--- a/libcxx/test/experimental/optional/optional.bad_optional_access/default.pass.cpp
+++ /dev/null
@@ -1,23 +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>
-
-// class bad_optional_access is default constructible
-
-#include <experimental/optional>
-#include <type_traits>
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- using std::experimental::bad_optional_access;
- bad_optional_access ex;
-#endif // _LIBCPP_STD_VER > 11
-}
diff --git a/libcxx/test/experimental/optional/optional.bad_optional_access/derive.pass.cpp b/libcxx/test/experimental/optional/optional.bad_optional_access/derive.pass.cpp
deleted file mode 100644
index c13d6603990..00000000000
--- a/libcxx/test/experimental/optional/optional.bad_optional_access/derive.pass.cpp
+++ /dev/null
@@ -1,25 +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>
-
-// class bad_optional_access : public logic_error
-
-#include <experimental/optional>
-#include <type_traits>
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- using std::experimental::bad_optional_access;
-
- static_assert(std::is_base_of<std::logic_error, bad_optional_access>::value, "");
- static_assert(std::is_convertible<bad_optional_access*, std::logic_error*>::value, "");
-#endif // _LIBCPP_STD_VER > 11
-}
diff --git a/libcxx/test/experimental/optional/optional.comp_with_t/equal.pass.cpp b/libcxx/test/experimental/optional/optional.comp_with_t/equal.pass.cpp
deleted file mode 100644
index e796723cc09..00000000000
--- a/libcxx/test/experimental/optional/optional.comp_with_t/equal.pass.cpp
+++ /dev/null
@@ -1,58 +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>
-
-// template <class T> constexpr bool operator==(const optional<T>& x, const T& v);
-// template <class T> constexpr bool operator==(const T& v, const optional<T>& x);
-
-#include <experimental/optional>
-
-#if _LIBCPP_STD_VER > 11
-
-using std::experimental::optional;
-
-struct X
-{
- int i_;
-
- constexpr X(int i) : i_(i) {}
-};
-
-constexpr bool operator == ( const X &lhs, const X &rhs )
- { return lhs.i_ == rhs.i_ ; }
-
-#endif
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- {
- typedef X T;
- typedef optional<T> O;
-
- constexpr T val(2);
- constexpr O o1; // disengaged
- constexpr O o2{1}; // engaged
- constexpr O o3{val}; // engaged
-
- static_assert ( !(o1 == T(1)), "" );
- static_assert ( (o2 == T(1)), "" );
- static_assert ( !(o3 == T(1)), "" );
- static_assert ( (o3 == T(2)), "" );
- static_assert ( (o3 == val), "" );
-
- static_assert ( !(T(1) == o1), "" );
- static_assert ( (T(1) == o2), "" );
- static_assert ( !(T(1) == o3), "" );
- static_assert ( (T(2) == o3), "" );
- static_assert ( (val == o3), "" );
- }
-#endif
-}
diff --git a/libcxx/test/experimental/optional/optional.comp_with_t/greater.pass.cpp b/libcxx/test/experimental/optional/optional.comp_with_t/greater.pass.cpp
deleted file mode 100644
index cf3923bb4fb..00000000000
--- a/libcxx/test/experimental/optional/optional.comp_with_t/greater.pass.cpp
+++ /dev/null
@@ -1,61 +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>
-
-// template <class T> constexpr bool operator>(const optional<T>& x, const T& v);
-// template <class T> constexpr bool operator>(const T& v, const optional<T>& x);
-
-#include <experimental/optional>
-
-#if _LIBCPP_STD_VER > 11
-
-using std::experimental::optional;
-
-struct X
-{
- int i_;
-
- constexpr X(int i) : i_(i) {}
-};
-
-constexpr bool operator < ( const X &lhs, const X &rhs )
- { return lhs.i_ < rhs.i_ ; }
-
-#endif
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
-
- {
- typedef X T;
- typedef optional<T> O;
-
- constexpr T val(2);
- constexpr O o1; // disengaged
- constexpr O o2{1}; // engaged
- constexpr O o3{val}; // engaged
-
- static_assert ( !(o1 > T(1)), "" );
- static_assert ( !(o2 > T(1)), "" ); // equal
- static_assert ( (o3 > T(1)), "" );
- static_assert ( !(o2 > val), "" );
- static_assert ( !(o3 > val), "" ); // equal
- static_assert ( !(o3 > T(3)), "" );
-
- static_assert ( (T(1) > o1), "" );
- static_assert ( !(T(1) > o2), "" ); // equal
- static_assert ( !(T(1) > o3), "" );
- static_assert ( (val > o2), "" );
- static_assert ( !(val > o3), "" ); // equal
- static_assert ( (T(3) > o3), "" );
- }
-#endif
-}
diff --git a/libcxx/test/experimental/optional/optional.comp_with_t/greater_equal.pass.cpp b/libcxx/test/experimental/optional/optional.comp_with_t/greater_equal.pass.cpp
deleted file mode 100644
index 85fea1377b3..00000000000
--- a/libcxx/test/experimental/optional/optional.comp_with_t/greater_equal.pass.cpp
+++ /dev/null
@@ -1,61 +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>
-
-// template <class T> constexpr bool operator>=(const optional<T>& x, const T& v);
-// template <class T> constexpr bool operator>=(const T& v, const optional<T>& x);
-
-#include <experimental/optional>
-
-#if _LIBCPP_STD_VER > 11
-
-using std::experimental::optional;
-
-struct X
-{
- int i_;
-
- constexpr X(int i) : i_(i) {}
-};
-
-constexpr bool operator < ( const X &lhs, const X &rhs )
- { return lhs.i_ < rhs.i_ ; }
-
-#endif
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
-
- {
- typedef X T;
- typedef optional<T> O;
-
- constexpr T val(2);
- constexpr O o1; // disengaged
- constexpr O o2{1}; // engaged
- constexpr O o3{val}; // engaged
-
- static_assert ( !(o1 >= T(1)), "" );
- static_assert ( (o2 >= T(1)), "" ); // equal
- static_assert ( (o3 >= T(1)), "" );
- static_assert ( !(o2 >= val), "" );
- static_assert ( (o3 >= val), "" ); // equal
- static_assert ( !(o3 >= T(3)), "" );
-
- static_assert ( (T(1) >= o1), "" );
- static_assert ( (T(1) >= o2), "" ); // equal
- static_assert ( !(T(1) >= o3), "" );
- static_assert ( (val >= o2), "" );
- static_assert ( (val >= o3), "" ); // equal
- static_assert ( (T(3) >= o3), "" );
- }
-#endif
-}
diff --git a/libcxx/test/experimental/optional/optional.comp_with_t/less_equal.pass.cpp b/libcxx/test/experimental/optional/optional.comp_with_t/less_equal.pass.cpp
deleted file mode 100644
index 333f7cdea21..00000000000
--- a/libcxx/test/experimental/optional/optional.comp_with_t/less_equal.pass.cpp
+++ /dev/null
@@ -1,61 +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>
-
-// template <class T> constexpr bool operator<=(const optional<T>& x, const T& v);
-// template <class T> constexpr bool operator<=(const T& v, const optional<T>& x);
-
-#include <experimental/optional>
-
-#if _LIBCPP_STD_VER > 11
-
-using std::experimental::optional;
-
-struct X
-{
- int i_;
-
- constexpr X(int i) : i_(i) {}
-};
-
-constexpr bool operator < ( const X &lhs, const X &rhs )
- { return lhs.i_ < rhs.i_ ; }
-
-#endif
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
-
- {
- typedef X T;
- typedef optional<T> O;
-
- constexpr T val(2);
- constexpr O o1; // disengaged
- constexpr O o2{1}; // engaged
- constexpr O o3{val}; // engaged
-
- static_assert ( (o1 <= T(1)), "" );
- static_assert ( (o2 <= T(1)), "" ); // equal
- static_assert ( !(o3 <= T(1)), "" );
- static_assert ( (o2 <= val), "" );
- static_assert ( (o3 <= val), "" ); // equal
- static_assert ( (o3 <= T(3)), "" );
-
- static_assert ( !(T(1) <= o1), "" );
- static_assert ( (T(1) <= o2), "" ); // equal
- static_assert ( (T(1) <= o3), "" );
- static_assert ( !(val <= o2), "" );
- static_assert ( (val <= o3), "" ); // equal
- static_assert ( !(T(3) <= o3), "" );
- }
-#endif
-}
diff --git a/libcxx/test/experimental/optional/optional.comp_with_t/less_than.pass.cpp b/libcxx/test/experimental/optional/optional.comp_with_t/less_than.pass.cpp
deleted file mode 100644
index e35df21bbab..00000000000
--- a/libcxx/test/experimental/optional/optional.comp_with_t/less_than.pass.cpp
+++ /dev/null
@@ -1,61 +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>
-
-// template <class T> constexpr bool operator<(const optional<T>& x, const T& v);
-// template <class T> constexpr bool operator<(const T& v, const optional<T>& x);
-
-#include <experimental/optional>
-
-#if _LIBCPP_STD_VER > 11
-
-using std::experimental::optional;
-
-struct X
-{
- int i_;
-
- constexpr X(int i) : i_(i) {}
-};
-
-constexpr bool operator < ( const X &lhs, const X &rhs )
- { return lhs.i_ < rhs.i_ ; }
-
-#endif
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
-
- {
- typedef X T;
- typedef optional<T> O;
-
- constexpr T val(2);
- constexpr O o1; // disengaged
- constexpr O o2{1}; // engaged
- constexpr O o3{val}; // engaged
-
- static_assert ( (o1 < T(1)), "" );
- static_assert ( !(o2 < T(1)), "" ); // equal
- static_assert ( !(o3 < T(1)), "" );
- static_assert ( (o2 < val), "" );
- static_assert ( !(o3 < val), "" ); // equal
- static_assert ( (o3 < T(3)), "" );
-
- static_assert ( !(T(1) < o1), "" );
- static_assert ( !(T(1) < o2), "" ); // equal
- static_assert ( (T(1) < o3), "" );
- static_assert ( !(val < o2), "" );
- static_assert ( !(val < o3), "" ); // equal
- static_assert ( !(T(3) < o3), "" );
- }
-#endif
-}
diff --git a/libcxx/test/experimental/optional/optional.comp_with_t/not_equal.pass.cpp b/libcxx/test/experimental/optional/optional.comp_with_t/not_equal.pass.cpp
deleted file mode 100644
index 0dad68d3863..00000000000
--- a/libcxx/test/experimental/optional/optional.comp_with_t/not_equal.pass.cpp
+++ /dev/null
@@ -1,58 +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>
-
-// template <class T> constexpr bool operator!=(const optional<T>& x, const T& v);
-// template <class T> constexpr bool operator!=(const T& v, const optional<T>& x);
-
-#include <experimental/optional>
-
-#if _LIBCPP_STD_VER > 11
-
-using std::experimental::optional;
-
-struct X
-{
- int i_;
-
- constexpr X(int i) : i_(i) {}
-};
-
-constexpr bool operator == ( const X &lhs, const X &rhs )
- { return lhs.i_ == rhs.i_ ; }
-
-#endif
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- {
- typedef X T;
- typedef optional<T> O;
-
- constexpr T val(2);
- constexpr O o1; // disengaged
- constexpr O o2{1}; // engaged
- constexpr O o3{val}; // engaged
-
- static_assert ( (o1 != T(1)), "" );
- static_assert ( !(o2 != T(1)), "" );
- static_assert ( (o3 != T(1)), "" );
- static_assert ( !(o3 != T(2)), "" );
- static_assert ( !(o3 != val), "" );
-
- static_assert ( (T(1) != o1), "" );
- static_assert ( !(T(1) != o2), "" );
- static_assert ( (T(1) != o3), "" );
- static_assert ( !(T(2) != o3), "" );
- static_assert ( !(val != o3), "" );
- }
-#endif
-}
diff --git a/libcxx/test/experimental/optional/optional.defs/tested_elsewhere.pass.cpp b/libcxx/test/experimental/optional/optional.defs/tested_elsewhere.pass.cpp
deleted file mode 100644
index b58f5c55b64..00000000000
--- a/libcxx/test/experimental/optional/optional.defs/tested_elsewhere.pass.cpp
+++ /dev/null
@@ -1,12 +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.
-//
-//===----------------------------------------------------------------------===//
-
-int main()
-{
-}
diff --git a/libcxx/test/experimental/optional/optional.general/nothing_to_do.pass.cpp b/libcxx/test/experimental/optional/optional.general/nothing_to_do.pass.cpp
deleted file mode 100644
index b58f5c55b64..00000000000
--- a/libcxx/test/experimental/optional/optional.general/nothing_to_do.pass.cpp
+++ /dev/null
@@ -1,12 +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.
-//
-//===----------------------------------------------------------------------===//
-
-int main()
-{
-}
diff --git a/libcxx/test/experimental/optional/optional.hash/hash.pass.cpp b/libcxx/test/experimental/optional/optional.hash/hash.pass.cpp
deleted file mode 100644
index 9e5fb55c833..00000000000
--- a/libcxx/test/experimental/optional/optional.hash/hash.pass.cpp
+++ /dev/null
@@ -1,47 +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>
-
-// template <class T> struct hash<optional<T>>;
-
-#include <experimental/optional>
-#include <string>
-#include <memory>
-#include <cassert>
-
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- using std::experimental::optional;
-
- {
- typedef int T;
- optional<T> opt;
- assert(std::hash<optional<T>>{}(opt) == 0);
- opt = 2;
- assert(std::hash<optional<T>>{}(opt) == std::hash<T>{}(*opt));
- }
- {
- typedef std::string T;
- optional<T> opt;
- assert(std::hash<optional<T>>{}(opt) == 0);
- opt = std::string("123");
- assert(std::hash<optional<T>>{}(opt) == std::hash<T>{}(*opt));
- }
- {
- typedef std::unique_ptr<int> T;
- optional<T> opt;
- assert(std::hash<optional<T>>{}(opt) == 0);
- opt = std::unique_ptr<int>(new int(3));
- assert(std::hash<optional<T>>{}(opt) == std::hash<T>{}(*opt));
- }
-#endif // _LIBCPP_STD_VER > 11
-}
diff --git a/libcxx/test/experimental/optional/optional.inplace/in_place_t.pass.cpp b/libcxx/test/experimental/optional/optional.inplace/in_place_t.pass.cpp
deleted file mode 100644
index 360b9d91671..00000000000
--- a/libcxx/test/experimental/optional/optional.inplace/in_place_t.pass.cpp
+++ /dev/null
@@ -1,42 +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>
-
-// struct in_place_t{};
-// constexpr in_place_t in_place{};
-
-#include <experimental/optional>
-#include <type_traits>
-
-#if _LIBCPP_STD_VER > 11
-
-using std::experimental::optional;
-using std::experimental::in_place_t;
-using std::experimental::in_place;
-
-constexpr
-int
-test(const in_place_t&)
-{
- return 3;
-}
-
-#endif
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
-
- static_assert((std::is_class<in_place_t>::value), "");
- static_assert((std::is_empty<in_place_t>::value), "");
-
- static_assert(test(in_place) == 3, "");
-#endif
-}
diff --git a/libcxx/test/experimental/optional/optional.nullops/equal.pass.cpp b/libcxx/test/experimental/optional/optional.nullops/equal.pass.cpp
deleted file mode 100644
index 931db614425..00000000000
--- a/libcxx/test/experimental/optional/optional.nullops/equal.pass.cpp
+++ /dev/null
@@ -1,41 +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>
-
-// template <class T> constexpr bool operator==(const optional<T>& x, nullopt_t) noexcept;
-// template <class T> constexpr bool operator==(nullopt_t, const optional<T>& x) noexcept;
-
-#include <experimental/optional>
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- using std::experimental::optional;
- using std::experimental::nullopt_t;
- using std::experimental::nullopt;
-
- {
- typedef int T;
- typedef optional<T> O;
-
- constexpr O o1; // disengaged
- constexpr O o2{1}; // engaged
-
- static_assert ( (nullopt == o1), "" );
- static_assert ( !(nullopt == o2), "" );
- static_assert ( (o1 == nullopt), "" );
- static_assert ( !(o2 == nullopt), "" );
-
- static_assert (noexcept(nullopt == o1), "");
- static_assert (noexcept(o1 == nullopt), "");
- }
-#endif
-}
diff --git a/libcxx/test/experimental/optional/optional.nullops/greater.pass.cpp b/libcxx/test/experimental/optional/optional.nullops/greater.pass.cpp
deleted file mode 100644
index b72a4d3f1a6..00000000000
--- a/libcxx/test/experimental/optional/optional.nullops/greater.pass.cpp
+++ /dev/null
@@ -1,41 +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>
-
-// template <class T> constexpr bool operator>(const optional<T>& x, nullopt_t) noexcept;
-// template <class T> constexpr bool operator>(nullopt_t, const optional<T>& x) noexcept;
-
-#include <experimental/optional>
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- using std::experimental::optional;
- using std::experimental::nullopt_t;
- using std::experimental::nullopt;
-
- {
- typedef int T;
- typedef optional<T> O;
-
- constexpr O o1; // disengaged
- constexpr O o2{1}; // engaged
-
- static_assert ( !(nullopt > o1), "" );
- static_assert ( !(nullopt > o2), "" );
- static_assert ( !(o1 > nullopt), "" );
- static_assert ( (o2 > nullopt), "" );
-
- static_assert (noexcept(nullopt > o1), "");
- static_assert (noexcept(o1 > nullopt), "");
- }
-#endif
-}
diff --git a/libcxx/test/experimental/optional/optional.nullops/greater_equal.pass.cpp b/libcxx/test/experimental/optional/optional.nullops/greater_equal.pass.cpp
deleted file mode 100644
index 86c8743b555..00000000000
--- a/libcxx/test/experimental/optional/optional.nullops/greater_equal.pass.cpp
+++ /dev/null
@@ -1,41 +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>
-
-// template <class T> constexpr bool operator>=(const optional<T>& x, nullopt_t) noexcept;
-// template <class T> constexpr bool operator>=(nullopt_t, const optional<T>& x) noexcept;
-
-#include <experimental/optional>
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- using std::experimental::optional;
- using std::experimental::nullopt_t;
- using std::experimental::nullopt;
-
- {
- typedef int T;
- typedef optional<T> O;
-
- constexpr O o1; // disengaged
- constexpr O o2{1}; // engaged
-
- static_assert ( (nullopt >= o1), "" );
- static_assert ( !(nullopt >= o2), "" );
- static_assert ( (o1 >= nullopt), "" );
- static_assert ( (o2 >= nullopt), "" );
-
- static_assert (noexcept(nullopt >= o1), "");
- static_assert (noexcept(o1 >= nullopt), "");
- }
-#endif
-}
diff --git a/libcxx/test/experimental/optional/optional.nullops/less_equal.pass.cpp b/libcxx/test/experimental/optional/optional.nullops/less_equal.pass.cpp
deleted file mode 100644
index 3e8444bc73f..00000000000
--- a/libcxx/test/experimental/optional/optional.nullops/less_equal.pass.cpp
+++ /dev/null
@@ -1,41 +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>
-
-// template <class T> constexpr bool operator<=(const optional<T>& x, nullopt_t) noexcept;
-// template <class T> constexpr bool operator<=(nullopt_t, const optional<T>& x) noexcept;
-
-#include <experimental/optional>
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- using std::experimental::optional;
- using std::experimental::nullopt_t;
- using std::experimental::nullopt;
-
- {
- typedef int T;
- typedef optional<T> O;
-
- constexpr O o1; // disengaged
- constexpr O o2{1}; // engaged
-
- static_assert ( (nullopt <= o1), "" );
- static_assert ( (nullopt <= o2), "" );
- static_assert ( (o1 <= nullopt), "" );
- static_assert ( !(o2 <= nullopt), "" );
-
- static_assert (noexcept(nullopt <= o1), "");
- static_assert (noexcept(o1 <= nullopt), "");
- }
-#endif
-}
diff --git a/libcxx/test/experimental/optional/optional.nullops/less_than.pass.cpp b/libcxx/test/experimental/optional/optional.nullops/less_than.pass.cpp
deleted file mode 100644
index 149c809b040..00000000000
--- a/libcxx/test/experimental/optional/optional.nullops/less_than.pass.cpp
+++ /dev/null
@@ -1,41 +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>
-
-// template <class T> constexpr bool operator<(const optional<T>& x, nullopt_t) noexcept;
-// template <class T> constexpr bool operator<(nullopt_t, const optional<T>& x) noexcept;
-
-#include <experimental/optional>
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- using std::experimental::optional;
- using std::experimental::nullopt_t;
- using std::experimental::nullopt;
-
- {
- typedef int T;
- typedef optional<T> O;
-
- constexpr O o1; // disengaged
- constexpr O o2{1}; // engaged
-
- static_assert ( !(nullopt < o1), "" );
- static_assert ( (nullopt < o2), "" );
- static_assert ( !(o1 < nullopt), "" );
- static_assert ( !(o2 < nullopt), "" );
-
- static_assert (noexcept(nullopt < o1), "");
- static_assert (noexcept(o1 < nullopt), "");
- }
-#endif
-}
diff --git a/libcxx/test/experimental/optional/optional.nullops/not_equal.pass.cpp b/libcxx/test/experimental/optional/optional.nullops/not_equal.pass.cpp
deleted file mode 100644
index 6f28edf6d26..00000000000
--- a/libcxx/test/experimental/optional/optional.nullops/not_equal.pass.cpp
+++ /dev/null
@@ -1,41 +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>
-
-// template <class T> constexpr bool operator!=(const optional<T>& x, nullopt_t) noexcept;
-// template <class T> constexpr bool operator!=(nullopt_t, const optional<T>& x) noexcept;
-
-#include <experimental/optional>
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- using std::experimental::optional;
- using std::experimental::nullopt_t;
- using std::experimental::nullopt;
-
- {
- typedef int T;
- typedef optional<T> O;
-
- constexpr O o1; // disengaged
- constexpr O o2{1}; // engaged
-
- static_assert ( !(nullopt != o1), "" );
- static_assert ( (nullopt != o2), "" );
- static_assert ( !(o1 != nullopt), "" );
- static_assert ( (o2 != nullopt), "" );
-
- static_assert (noexcept(nullopt != o1), "");
- static_assert (noexcept(o1 != nullopt), "");
- }
-#endif
-}
diff --git a/libcxx/test/experimental/optional/optional.nullopt/nullopt_t.pass.cpp b/libcxx/test/experimental/optional/optional.nullopt/nullopt_t.pass.cpp
deleted file mode 100644
index de1e83b653c..00000000000
--- a/libcxx/test/experimental/optional/optional.nullopt/nullopt_t.pass.cpp
+++ /dev/null
@@ -1,43 +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>
-
-// struct nullopt_t{see below};
-// constexpr nullopt_t nullopt(unspecified);
-
-#include <experimental/optional>
-#include <type_traits>
-
-#if _LIBCPP_STD_VER > 11
-
-using std::experimental::optional;
-using std::experimental::nullopt_t;
-using std::experimental::nullopt;
-
-constexpr
-int
-test(const nullopt_t&)
-{
- return 3;
-}
-
-#endif
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- static_assert((std::is_class<nullopt_t>::value), "");
- static_assert((std::is_empty<nullopt_t>::value), "");
- static_assert((std::is_literal_type<nullopt_t>::value), "");
- static_assert((!std::is_default_constructible<nullopt_t>::value), "");
-
- static_assert(test(nullopt) == 3, "");
-#endif
-}
diff --git a/libcxx/test/experimental/optional/optional.object/optional.object.assign/assign_value.pass.cpp b/libcxx/test/experimental/optional/optional.object/optional.object.assign/assign_value.pass.cpp
deleted file mode 100644
index e256a098f1a..00000000000
--- a/libcxx/test/experimental/optional/optional.object/optional.object.assign/assign_value.pass.cpp
+++ /dev/null
@@ -1,72 +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>
-
-// template <class U> optional<T>& operator=(U&& v);
-
-#include <experimental/optional>
-#include <type_traits>
-#include <cassert>
-#include <memory>
-
-#if _LIBCPP_STD_VER > 11
-
-using std::experimental::optional;
-
-struct X
-{
-};
-
-#endif // _LIBCPP_STD_VER > 11
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- static_assert(std::is_assignable<optional<int>, int>::value, "");
- static_assert(std::is_assignable<optional<int>, int&>::value, "");
- static_assert(std::is_assignable<optional<int>&, int>::value, "");
- static_assert(std::is_assignable<optional<int>&, int&>::value, "");
- static_assert(std::is_assignable<optional<int>&, const int&>::value, "");
- static_assert(!std::is_assignable<const optional<int>&, const int&>::value, "");
- static_assert(!std::is_assignable<optional<int>, X>::value, "");
- {
- optional<int> opt;
- opt = 1;
- assert(static_cast<bool>(opt) == true);
- assert(*opt == 1);
- }
- {
- optional<int> opt;
- const int i = 2;
- opt = i;
- assert(static_cast<bool>(opt) == true);
- assert(*opt == i);
- }
- {
- optional<int> opt(3);
- const int i = 2;
- opt = i;
- assert(static_cast<bool>(opt) == true);
- assert(*opt == i);
- }
- {
- optional<std::unique_ptr<int>> opt;
- opt = std::unique_ptr<int>(new int(3));
- assert(static_cast<bool>(opt) == true);
- assert(**opt == 3);
- }
- {
- optional<std::unique_ptr<int>> opt(std::unique_ptr<int>(new int(2)));
- opt = std::unique_ptr<int>(new int(3));
- assert(static_cast<bool>(opt) == true);
- assert(**opt == 3);
- }
-#endif // _LIBCPP_STD_VER > 11
-}
diff --git a/libcxx/test/experimental/optional/optional.object/optional.object.assign/copy.pass.cpp b/libcxx/test/experimental/optional/optional.object/optional.object.assign/copy.pass.cpp
deleted file mode 100644
index 81c3b4e6dfa..00000000000
--- a/libcxx/test/experimental/optional/optional.object/optional.object.assign/copy.pass.cpp
+++ /dev/null
@@ -1,90 +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=(const optional<T>& rhs);
-
-#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(const X&)
- {
- if (throw_now)
- throw 6;
- }
-};
-
-bool X::throw_now = false;
-
-#endif // _LIBCPP_STD_VER > 11
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- {
- optional<int> opt;
- constexpr optional<int> opt2;
- opt = 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 = 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 = 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 = 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<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 // _LIBCPP_STD_VER > 11
-}
diff --git a/libcxx/test/experimental/optional/optional.object/optional.object.assign/emplace.pass.cpp b/libcxx/test/experimental/optional/optional.object/optional.object.assign/emplace.pass.cpp
deleted file mode 100644
index c4361ea5178..00000000000
--- a/libcxx/test/experimental/optional/optional.object/optional.object.assign/emplace.pass.cpp
+++ /dev/null
@@ -1,148 +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>
-
-// template <class... Args> void optional<T>::emplace(Args&&... args);
-
-#include <experimental/optional>
-#include <type_traits>
-#include <cassert>
-#include <memory>
-
-#if _LIBCPP_STD_VER > 11
-
-using std::experimental::optional;
-
-class X
-{
- int i_;
- int j_ = 0;
-public:
- X() : i_(0) {}
- X(int i) : i_(i) {}
- X(int i, int j) : i_(i), j_(j) {}
-
- friend bool operator==(const X& x, const X& y)
- {return x.i_ == y.i_ && x.j_ == y.j_;}
-};
-
-class Y
-{
-public:
- static bool dtor_called;
- Y() = default;
- ~Y() {dtor_called = true;}
-};
-
-bool Y::dtor_called = false;
-
-class Z
-{
-public:
- static bool dtor_called;
- Z() = default;
- Z(int) {throw 6;}
- ~Z() {dtor_called = true;}
-};
-
-bool Z::dtor_called = false;
-
-#endif // _LIBCPP_STD_VER > 11
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- {
- optional<int> opt;
- opt.emplace();
- assert(static_cast<bool>(opt) == true);
- assert(*opt == 0);
- }
- {
- optional<int> opt;
- opt.emplace(1);
- assert(static_cast<bool>(opt) == true);
- assert(*opt == 1);
- }
- {
- optional<int> opt(2);
- opt.emplace();
- assert(static_cast<bool>(opt) == true);
- assert(*opt == 0);
- }
- {
- optional<int> opt(2);
- opt.emplace(1);
- assert(static_cast<bool>(opt) == true);
- assert(*opt == 1);
- }
- {
- optional<X> opt;
- opt.emplace();
- assert(static_cast<bool>(opt) == true);
- assert(*opt == X());
- }
- {
- optional<X> opt;
- opt.emplace(1);
- assert(static_cast<bool>(opt) == true);
- assert(*opt == X(1));
- }
- {
- optional<X> opt;
- opt.emplace(1, 2);
- assert(static_cast<bool>(opt) == true);
- assert(*opt == X(1, 2));
- }
- {
- optional<X> opt(X{3});
- opt.emplace();
- assert(static_cast<bool>(opt) == true);
- assert(*opt == X());
- }
- {
- optional<X> opt(X{3});
- opt.emplace(1);
- assert(static_cast<bool>(opt) == true);
- assert(*opt == X(1));
- }
- {
- optional<X> opt(X{3});
- opt.emplace(1, 2);
- assert(static_cast<bool>(opt) == true);
- assert(*opt == X(1, 2));
- }
- {
- Y y;
- {
- optional<Y> opt(y);
- assert(Y::dtor_called == false);
- opt.emplace();
- assert(Y::dtor_called == true);
- }
- }
- {
- Z z;
- optional<Z> opt(z);
- try
- {
- assert(static_cast<bool>(opt) == true);
- assert(Z::dtor_called == false);
- opt.emplace(1);
- }
- catch (int i)
- {
- assert(i == 6);
- assert(static_cast<bool>(opt) == false);
- assert(Z::dtor_called == true);
- }
- }
-#endif // _LIBCPP_STD_VER > 11
-}
diff --git a/libcxx/test/experimental/optional/optional.object/optional.object.assign/emplace_initializer_list.pass.cpp b/libcxx/test/experimental/optional/optional.object/optional.object.assign/emplace_initializer_list.pass.cpp
deleted file mode 100644
index 8d20be3de19..00000000000
--- a/libcxx/test/experimental/optional/optional.object/optional.object.assign/emplace_initializer_list.pass.cpp
+++ /dev/null
@@ -1,116 +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>
-
-// template <class U, class... Args>
-// void optional<T>::emplace(initializer_list<U> il, Args&&... args);
-
-#include <experimental/optional>
-#include <type_traits>
-#include <cassert>
-#include <vector>
-
-#if _LIBCPP_STD_VER > 11
-
-using std::experimental::optional;
-
-class X
-{
- int i_;
- int j_ = 0;
-public:
- static bool dtor_called;
- constexpr X() : i_(0) {}
- constexpr X(int i) : i_(i) {}
- constexpr X(std::initializer_list<int> il) : i_(il.begin()[0]), j_(il.begin()[1]) {}
- ~X() {dtor_called = true;}
-
- friend constexpr bool operator==(const X& x, const X& y)
- {return x.i_ == y.i_ && x.j_ == y.j_;}
-};
-
-bool X::dtor_called = false;
-
-class Y
-{
- int i_;
- int j_ = 0;
-public:
- constexpr Y() : i_(0) {}
- constexpr Y(int i) : i_(i) {}
- constexpr Y(std::initializer_list<int> il) : i_(il.begin()[0]), j_(il.begin()[1]) {}
-
- friend constexpr bool operator==(const Y& x, const Y& y)
- {return x.i_ == y.i_ && x.j_ == y.j_;}
-};
-
-class Z
-{
- int i_;
- int j_ = 0;
-public:
- static bool dtor_called;
- constexpr Z() : i_(0) {}
- constexpr Z(int i) : i_(i) {}
- constexpr Z(std::initializer_list<int> il) : i_(il.begin()[0]), j_(il.begin()[1])
- {throw 6;}
- ~Z() {dtor_called = true;}
-
- friend constexpr bool operator==(const Z& x, const Z& y)
- {return x.i_ == y.i_ && x.j_ == y.j_;}
-};
-
-bool Z::dtor_called = false;
-
-#endif // _LIBCPP_STD_VER > 11
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- {
- X x;
- {
- optional<X> opt(x);
- assert(X::dtor_called == false);
- opt.emplace({1, 2});
- assert(X::dtor_called == true);
- assert(*opt == X({1, 2}));
- }
- }
- {
- optional<std::vector<int>> opt;
- opt.emplace({1, 2, 3}, std::allocator<int>());
- assert(static_cast<bool>(opt) == true);
- assert(*opt == std::vector<int>({1, 2, 3}));
- }
- {
- optional<Y> opt;
- opt.emplace({1, 2});
- assert(static_cast<bool>(opt) == true);
- assert(*opt == Y({1, 2}));
- }
- {
- Z z;
- optional<Z> opt(z);
- try
- {
- assert(static_cast<bool>(opt) == true);
- assert(Z::dtor_called == false);
- opt.emplace({1, 2});
- }
- catch (int i)
- {
- assert(i == 6);
- assert(static_cast<bool>(opt) == false);
- assert(Z::dtor_called == true);
- }
- }
-#endif // _LIBCPP_STD_VER > 11
-}
diff --git a/libcxx/test/experimental/optional/optional.object/optional.object.assign/move.pass.cpp b/libcxx/test/experimental/optional/optional.object/optional.object.assign/move.pass.cpp
deleted file mode 100644
index d27313dad42..00000000000
--- a/libcxx/test/experimental/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
-}
diff --git a/libcxx/test/experimental/optional/optional.object/optional.object.assign/nullopt_t.pass.cpp b/libcxx/test/experimental/optional/optional.object/optional.object.assign/nullopt_t.pass.cpp
deleted file mode 100644
index 7f39744f055..00000000000
--- a/libcxx/test/experimental/optional/optional.object/optional.object.assign/nullopt_t.pass.cpp
+++ /dev/null
@@ -1,67 +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=(nullopt_t) noexcept;
-
-#include <experimental/optional>
-#include <type_traits>
-#include <cassert>
-
-#if _LIBCPP_STD_VER > 11
-
-using std::experimental::optional;
-using std::experimental::nullopt_t;
-using std::experimental::nullopt;
-
-struct X
-{
- static bool dtor_called;
- ~X() {dtor_called = true;}
-};
-
-bool X::dtor_called = false;
-
-#endif // _LIBCPP_STD_VER > 11
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- {
- optional<int> opt;
- static_assert(noexcept(opt = nullopt) == true, "");
- opt = nullopt;
- assert(static_cast<bool>(opt) == false);
- }
- {
- optional<int> opt(3);
- opt = nullopt;
- assert(static_cast<bool>(opt) == false);
- }
- {
- optional<X> opt;
- static_assert(noexcept(opt = nullopt) == true, "");
- assert(X::dtor_called == false);
- opt = nullopt;
- assert(X::dtor_called == false);
- assert(static_cast<bool>(opt) == false);
- }
- {
- X x;
- {
- optional<X> opt(x);
- assert(X::dtor_called == false);
- opt = nullopt;
- assert(X::dtor_called == true);
- assert(static_cast<bool>(opt) == false);
- }
- }
-#endif // _LIBCPP_STD_VER > 11
-}
diff --git a/libcxx/test/experimental/optional/optional.object/optional.object.ctor/const_T.pass.cpp b/libcxx/test/experimental/optional/optional.object/optional.object.ctor/const_T.pass.cpp
deleted file mode 100644
index 071f5943b97..00000000000
--- a/libcxx/test/experimental/optional/optional.object/optional.object.ctor/const_T.pass.cpp
+++ /dev/null
@@ -1,117 +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>
-
-// constexpr optional(const T& v);
-
-#include <experimental/optional>
-#include <type_traits>
-#include <cassert>
-
-#if _LIBCPP_STD_VER > 11
-
-using std::experimental::optional;
-
-class X
-{
- int i_;
-public:
- X(int i) : i_(i) {}
-
- friend bool operator==(const X& x, const X& y) {return x.i_ == y.i_;}
-};
-
-class Y
-{
- int i_;
-public:
- constexpr Y(int i) : i_(i) {}
-
- friend constexpr bool operator==(const Y& x, const Y& y) {return x.i_ == y.i_;}
-};
-
-class Z
-{
- int i_;
-public:
- Z(int i) : i_(i) {}
- Z(const Z&) {throw 6;}
-};
-
-
-#endif // _LIBCPP_STD_VER > 11
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- {
- typedef int T;
- constexpr T t(5);
- constexpr optional<T> opt(t);
- static_assert(static_cast<bool>(opt) == true, "");
- static_assert(*opt == 5, "");
-
- struct test_constexpr_ctor
- : public optional<T>
- {
- constexpr test_constexpr_ctor(const T&) {}
- };
-
- }
- {
- typedef double T;
- constexpr T t(3);
- constexpr optional<T> opt(t);
- static_assert(static_cast<bool>(opt) == true, "");
- static_assert(*opt == 3, "");
-
- struct test_constexpr_ctor
- : public optional<T>
- {
- constexpr test_constexpr_ctor(const T&) {}
- };
-
- }
- {
- typedef X T;
- const T t(3);
- optional<T> opt(t);
- assert(static_cast<bool>(opt) == true);
- assert(*opt == 3);
- }
- {
- typedef Y T;
- constexpr T t(3);
- constexpr optional<T> opt(t);
- static_assert(static_cast<bool>(opt) == true, "");
- static_assert(*opt == 3, "");
-
- struct test_constexpr_ctor
- : public optional<T>
- {
- constexpr test_constexpr_ctor(const T&) {}
- };
-
- }
- {
- typedef Z T;
- try
- {
- const T t(3);
- optional<T> opt(t);
- assert(false);
- }
- catch (int i)
- {
- assert(i == 6);
- }
- }
-#endif // _LIBCPP_STD_VER > 11
-}
diff --git a/libcxx/test/experimental/optional/optional.object/optional.object.ctor/copy.pass.cpp b/libcxx/test/experimental/optional/optional.object/optional.object.ctor/copy.pass.cpp
deleted file mode 100644
index 8726f95a00c..00000000000
--- a/libcxx/test/experimental/optional/optional.object/optional.object.ctor/copy.pass.cpp
+++ /dev/null
@@ -1,124 +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(const optional<T>& rhs);
-
-#include <experimental/optional>
-#include <type_traits>
-#include <cassert>
-
-#if _LIBCPP_STD_VER > 11
-
-using std::experimental::optional;
-
-template <class T>
-void
-test(const optional<T>& rhs, bool is_going_to_throw = false)
-{
- bool rhs_engaged = static_cast<bool>(rhs);
- try
- {
- optional<T> lhs = rhs;
- assert(is_going_to_throw == false);
- assert(static_cast<bool>(lhs) == rhs_engaged);
- if (rhs_engaged)
- assert(*lhs == *rhs);
- }
- catch (int i)
- {
- assert(i == 6);
- }
-}
-
-class X
-{
- int i_;
-public:
- X(int i) : i_(i) {}
- X(const X& x) : i_(x.i_) {}
- ~X() {i_ = 0;}
- friend bool operator==(const X& x, const X& y) {return x.i_ == y.i_;}
-};
-
-class Y
-{
- int i_;
-public:
- Y(int i) : i_(i) {}
- Y(const Y& x) : i_(x.i_) {}
-
- friend constexpr bool operator==(const Y& x, const Y& y) {return x.i_ == y.i_;}
-};
-
-int count = 0;
-
-class Z
-{
- int i_;
-public:
- Z(int i) : i_(i) {}
- Z(const Z&)
- {
- if (++count == 2)
- throw 6;
- }
-
- friend constexpr bool operator==(const Z& x, const Z& y) {return x.i_ == y.i_;}
-};
-
-
-#endif // _LIBCPP_STD_VER > 11
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- {
- typedef int T;
- optional<T> rhs;
- test(rhs);
- }
- {
- typedef int T;
- optional<T> rhs(3);
- test(rhs);
- }
- {
- typedef X T;
- optional<T> rhs;
- test(rhs);
- }
- {
- typedef X T;
- optional<T> rhs(X(3));
- test(rhs);
- }
- {
- typedef Y T;
- optional<T> rhs;
- test(rhs);
- }
- {
- typedef Y T;
- optional<T> rhs(Y(3));
- test(rhs);
- }
- {
- typedef Z T;
- optional<T> rhs;
- test(rhs);
- }
- {
- typedef Z T;
- optional<T> rhs(Z(3));
- test(rhs, true);
- }
-#endif // _LIBCPP_STD_VER > 11
-}
diff --git a/libcxx/test/experimental/optional/optional.object/optional.object.ctor/default.pass.cpp b/libcxx/test/experimental/optional/optional.object/optional.object.ctor/default.pass.cpp
deleted file mode 100644
index 6a1763de22b..00000000000
--- a/libcxx/test/experimental/optional/optional.object/optional.object.ctor/default.pass.cpp
+++ /dev/null
@@ -1,67 +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>
-
-// constexpr optional() noexcept;
-
-#include <experimental/optional>
-#include <type_traits>
-#include <cassert>
-
-#if _LIBCPP_STD_VER > 11
-
-using std::experimental::optional;
-
-template <class Opt>
-void
-test_constexpr()
-{
- static_assert(std::is_nothrow_default_constructible<Opt>::value, "");
- constexpr Opt opt;
- static_assert(static_cast<bool>(opt) == false, "");
-
- struct test_constexpr_ctor
- : public Opt
- {
- constexpr test_constexpr_ctor() {}
- };
-
-}
-
-template <class Opt>
-void
-test()
-{
- static_assert(std::is_nothrow_default_constructible<Opt>::value, "");
- Opt opt;
- assert(static_cast<bool>(opt) == false);
-
- struct test_constexpr_ctor
- : public Opt
- {
- constexpr test_constexpr_ctor() {}
- };
-}
-
-struct X
-{
- X();
-};
-
-#endif // _LIBCPP_STD_VER > 11
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- test_constexpr<optional<int>>();
- test_constexpr<optional<int*>>();
- test<optional<X>>();
-#endif // _LIBCPP_STD_VER > 11
-}
diff --git a/libcxx/test/experimental/optional/optional.object/optional.object.ctor/in_place_t.pass.cpp b/libcxx/test/experimental/optional/optional.object/optional.object.ctor/in_place_t.pass.cpp
deleted file mode 100644
index 412c993ffbd..00000000000
--- a/libcxx/test/experimental/optional/optional.object/optional.object.ctor/in_place_t.pass.cpp
+++ /dev/null
@@ -1,145 +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>
-
-// template <class... Args>
-// constexpr explicit optional(in_place_t, Args&&... args);
-
-#include <experimental/optional>
-#include <type_traits>
-#include <cassert>
-
-#if _LIBCPP_STD_VER > 11
-
-using std::experimental::optional;
-using std::experimental::in_place_t;
-using std::experimental::in_place;
-
-class X
-{
- int i_;
- int j_ = 0;
-public:
- X() : i_(0) {}
- X(int i) : i_(i) {}
- X(int i, int j) : i_(i), j_(j) {}
-
- ~X() {}
-
- friend bool operator==(const X& x, const X& y)
- {return x.i_ == y.i_ && x.j_ == y.j_;}
-};
-
-class Y
-{
- int i_;
- int j_ = 0;
-public:
- constexpr Y() : i_(0) {}
- constexpr Y(int i) : i_(i) {}
- constexpr Y(int i, int j) : i_(i), j_(j) {}
-
- friend constexpr bool operator==(const Y& x, const Y& y)
- {return x.i_ == y.i_ && x.j_ == y.j_;}
-};
-
-class Z
-{
- int i_;
-public:
- Z(int i) : i_(i) {throw 6;}
-};
-
-
-#endif // _LIBCPP_STD_VER > 11
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- {
- constexpr optional<int> opt(in_place, 5);
- static_assert(static_cast<bool>(opt) == true, "");
- static_assert(*opt == 5, "");
-
- struct test_constexpr_ctor
- : public optional<int>
- {
- constexpr test_constexpr_ctor(in_place_t, int i)
- : optional<int>(in_place, i) {}
- };
-
- }
- {
- const optional<X> opt(in_place);
- assert(static_cast<bool>(opt) == true);
- assert(*opt == X());
- }
- {
- const optional<X> opt(in_place, 5);
- assert(static_cast<bool>(opt) == true);
- assert(*opt == X(5));
- }
- {
- const optional<X> opt(in_place, 5, 4);
- assert(static_cast<bool>(opt) == true);
- assert(*opt == X(5, 4));
- }
- {
- constexpr optional<Y> opt(in_place);
- static_assert(static_cast<bool>(opt) == true, "");
- static_assert(*opt == Y(), "");
-
- struct test_constexpr_ctor
- : public optional<Y>
- {
- constexpr test_constexpr_ctor(in_place_t)
- : optional<Y>(in_place) {}
- };
-
- }
- {
- constexpr optional<Y> opt(in_place, 5);
- static_assert(static_cast<bool>(opt) == true, "");
- static_assert(*opt == Y(5), "");
-
- struct test_constexpr_ctor
- : public optional<Y>
- {
- constexpr test_constexpr_ctor(in_place_t, int i)
- : optional<Y>(in_place, i) {}
- };
-
- }
- {
- constexpr optional<Y> opt(in_place, 5, 4);
- static_assert(static_cast<bool>(opt) == true, "");
- static_assert(*opt == Y(5, 4), "");
-
- struct test_constexpr_ctor
- : public optional<Y>
- {
- constexpr test_constexpr_ctor(in_place_t, int i, int j)
- : optional<Y>(in_place, i, j) {}
- };
-
- }
- {
- try
- {
- const optional<Z> opt(in_place, 1);
- assert(false);
- }
- catch (int i)
- {
- assert(i == 6);
- }
- }
-#endif // _LIBCPP_STD_VER > 11
-}
diff --git a/libcxx/test/experimental/optional/optional.object/optional.object.ctor/initializer_list.pass.cpp b/libcxx/test/experimental/optional/optional.object/optional.object.ctor/initializer_list.pass.cpp
deleted file mode 100644
index 98cb929dc51..00000000000
--- a/libcxx/test/experimental/optional/optional.object/optional.object.ctor/initializer_list.pass.cpp
+++ /dev/null
@@ -1,126 +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>
-
-// template <class U, class... Args>
-// constexpr
-// explicit optional(in_place_t, initializer_list<U> il, Args&&... args);
-
-#include <experimental/optional>
-#include <type_traits>
-#include <vector>
-#include <cassert>
-
-#if _LIBCPP_STD_VER > 11
-
-using std::experimental::optional;
-using std::experimental::in_place_t;
-using std::experimental::in_place;
-
-class X
-{
- int i_;
- int j_ = 0;
-public:
- X() : i_(0) {}
- X(int i) : i_(i) {}
- X(int i, int j) : i_(i), j_(j) {}
-
- ~X() {}
-
- friend bool operator==(const X& x, const X& y)
- {return x.i_ == y.i_ && x.j_ == y.j_;}
-};
-
-class Y
-{
- int i_;
- int j_ = 0;
-public:
- constexpr Y() : i_(0) {}
- constexpr Y(int i) : i_(i) {}
- constexpr Y(std::initializer_list<int> il) : i_(il.begin()[0]), j_(il.begin()[1]) {}
-
- friend constexpr bool operator==(const Y& x, const Y& y)
- {return x.i_ == y.i_ && x.j_ == y.j_;}
-};
-
-class Z
-{
- int i_;
- int j_ = 0;
-public:
- constexpr Z() : i_(0) {}
- constexpr Z(int i) : i_(i) {}
- constexpr Z(std::initializer_list<int> il) : i_(il.begin()[0]), j_(il.begin()[1])
- {throw 6;}
-
- friend constexpr bool operator==(const Z& x, const Z& y)
- {return x.i_ == y.i_ && x.j_ == y.j_;}
-};
-
-
-#endif // _LIBCPP_STD_VER > 11
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- {
- static_assert(!std::is_constructible<X, std::initializer_list<int>&>::value, "");
- static_assert(!std::is_constructible<optional<X>, std::initializer_list<int>&>::value, "");
- }
- {
- optional<std::vector<int>> opt(in_place, {3, 1});
- assert(static_cast<bool>(opt) == true);
- assert((*opt == std::vector<int>{3, 1}));
- assert(opt->size() == 2);
- }
- {
- optional<std::vector<int>> opt(in_place, {3, 1}, std::allocator<int>());
- assert(static_cast<bool>(opt) == true);
- assert((*opt == std::vector<int>{3, 1}));
- assert(opt->size() == 2);
- }
- {
- static_assert(std::is_constructible<optional<Y>, std::initializer_list<int>&>::value, "");
- constexpr optional<Y> opt(in_place, {3, 1});
- static_assert(static_cast<bool>(opt) == true, "");
- static_assert(*opt == Y{3, 1}, "");
-
- struct test_constexpr_ctor
- : public optional<Y>
- {
- constexpr test_constexpr_ctor(in_place_t, std::initializer_list<int> i)
- : optional<Y>(in_place, i) {}
- };
-
- }
- {
- static_assert(std::is_constructible<optional<Z>, std::initializer_list<int>&>::value, "");
- try
- {
- optional<Z> opt(in_place, {3, 1});
- assert(false);
- }
- catch (int i)
- {
- assert(i == 6);
- }
-
- struct test_constexpr_ctor
- : public optional<Z>
- {
- constexpr test_constexpr_ctor(in_place_t, std::initializer_list<int> i)
- : optional<Z>(in_place, i) {}
- };
-
- }
-#endif // _LIBCPP_STD_VER > 11
-}
diff --git a/libcxx/test/experimental/optional/optional.object/optional.object.ctor/move.pass.cpp b/libcxx/test/experimental/optional/optional.object/optional.object.ctor/move.pass.cpp
deleted file mode 100644
index b320c95c582..00000000000
--- a/libcxx/test/experimental/optional/optional.object/optional.object.ctor/move.pass.cpp
+++ /dev/null
@@ -1,124 +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(optional<T>&& rhs) noexcept(is_nothrow_move_constructible<T>::value);
-
-#include <experimental/optional>
-#include <type_traits>
-#include <cassert>
-
-#if _LIBCPP_STD_VER > 11
-
-using std::experimental::optional;
-
-template <class T>
-void
-test(optional<T>& rhs, bool is_going_to_throw = false)
-{
- static_assert(std::is_nothrow_move_constructible<optional<T>>::value ==
- std::is_nothrow_move_constructible<T>::value, "");
- bool rhs_engaged = static_cast<bool>(rhs);
- try
- {
- optional<T> lhs = std::move(rhs);
- assert(is_going_to_throw == false);
- assert(static_cast<bool>(lhs) == rhs_engaged);
- }
- catch (int i)
- {
- assert(i == 6);
- }
-}
-
-class X
-{
- int i_;
-public:
- X(int i) : i_(i) {}
- X(X&& x) : i_(x.i_) {x.i_ = 0;}
- ~X() {i_ = 0;}
- friend bool operator==(const X& x, const X& y) {return x.i_ == y.i_;}
-};
-
-class Y
-{
- int i_;
-public:
- Y(int i) : i_(i) {}
- Y(Y&& x) noexcept : i_(x.i_) {x.i_ = 0;}
-
- friend constexpr bool operator==(const Y& x, const Y& y) {return x.i_ == y.i_;}
-};
-
-int count = 0;
-
-class Z
-{
- int i_;
-public:
- Z(int i) : i_(i) {}
- Z(Z&&)
- {
- if (++count == 2)
- throw 6;
- }
-
- friend constexpr bool operator==(const Z& x, const Z& y) {return x.i_ == y.i_;}
-};
-
-
-#endif // _LIBCPP_STD_VER > 11
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- {
- typedef int T;
- optional<T> rhs;
- test(rhs);
- }
- {
- typedef int T;
- optional<T> rhs(3);
- test(rhs);
- }
- {
- typedef X T;
- optional<T> rhs;
- test(rhs);
- }
- {
- typedef X T;
- optional<T> rhs(X(3));
- test(rhs);
- }
- {
- typedef Y T;
- optional<T> rhs;
- test(rhs);
- }
- {
- typedef Y T;
- optional<T> rhs(Y(3));
- test(rhs);
- }
- {
- typedef Z T;
- optional<T> rhs;
- test(rhs);
- }
- {
- typedef Z T;
- optional<T> rhs(Z(3));
- test(rhs, true);
- }
-#endif // _LIBCPP_STD_VER > 11
-}
diff --git a/libcxx/test/experimental/optional/optional.object/optional.object.ctor/nullopt_t.pass.cpp b/libcxx/test/experimental/optional/optional.object/optional.object.ctor/nullopt_t.pass.cpp
deleted file mode 100644
index c307a2e1e25..00000000000
--- a/libcxx/test/experimental/optional/optional.object/optional.object.ctor/nullopt_t.pass.cpp
+++ /dev/null
@@ -1,68 +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>
-
-// constexpr optional(nullopt_t) noexcept;
-
-#include <experimental/optional>
-#include <type_traits>
-#include <cassert>
-
-#if _LIBCPP_STD_VER > 11
-
-using std::experimental::optional;
-using std::experimental::nullopt_t;
-using std::experimental::nullopt;
-
-template <class Opt>
-void
-test_constexpr()
-{
- static_assert(noexcept(Opt(nullopt)), "");
- constexpr Opt opt(nullopt);
- static_assert(static_cast<bool>(opt) == false, "");
-
- struct test_constexpr_ctor
- : public Opt
- {
- constexpr test_constexpr_ctor() {}
- };
-}
-
-template <class Opt>
-void
-test()
-{
- static_assert(noexcept(Opt(nullopt)), "");
- Opt opt(nullopt);
- assert(static_cast<bool>(opt) == false);
-
- struct test_constexpr_ctor
- : public Opt
- {
- constexpr test_constexpr_ctor() {}
- };
-}
-
-struct X
-{
- X();
-};
-
-#endif // _LIBCPP_STD_VER > 11
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- test_constexpr<optional<int>>();
- test_constexpr<optional<int*>>();
- test<optional<X>>();
-#endif // _LIBCPP_STD_VER > 11
-}
diff --git a/libcxx/test/experimental/optional/optional.object/optional.object.ctor/rvalue_T.pass.cpp b/libcxx/test/experimental/optional/optional.object/optional.object.ctor/rvalue_T.pass.cpp
deleted file mode 100644
index ac52a42d595..00000000000
--- a/libcxx/test/experimental/optional/optional.object/optional.object.ctor/rvalue_T.pass.cpp
+++ /dev/null
@@ -1,110 +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>
-
-// constexpr optional(T&& v);
-
-#include <experimental/optional>
-#include <type_traits>
-#include <cassert>
-
-#if _LIBCPP_STD_VER > 11
-
-using std::experimental::optional;
-
-class X
-{
- int i_;
-public:
- X(int i) : i_(i) {}
- X(X&& x) : i_(x.i_) {}
-
- friend bool operator==(const X& x, const X& y) {return x.i_ == y.i_;}
-};
-
-class Y
-{
- int i_;
-public:
- constexpr Y(int i) : i_(i) {}
- constexpr Y(Y&& x) : i_(x.i_) {}
-
- friend constexpr bool operator==(const Y& x, const Y& y) {return x.i_ == y.i_;}
-};
-
-class Z
-{
- int i_;
-public:
- Z(int i) : i_(i) {}
- Z(Z&&) {throw 6;}
-};
-
-#endif // _LIBCPP_STD_VER > 11
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- {
- typedef int T;
- constexpr optional<T> opt(T(5));
- static_assert(static_cast<bool>(opt) == true, "");
- static_assert(*opt == 5, "");
-
- struct test_constexpr_ctor
- : public optional<T>
- {
- constexpr test_constexpr_ctor(T&&) {}
- };
- }
- {
- typedef double T;
- constexpr optional<T> opt(T(3));
- static_assert(static_cast<bool>(opt) == true, "");
- static_assert(*opt == 3, "");
-
- struct test_constexpr_ctor
- : public optional<T>
- {
- constexpr test_constexpr_ctor(T&&) {}
- };
- }
- {
- typedef X T;
- optional<T> opt(T(3));
- assert(static_cast<bool>(opt) == true);
- assert(*opt == 3);
- }
- {
- typedef Y T;
- constexpr optional<T> opt(T(3));
- static_assert(static_cast<bool>(opt) == true, "");
- static_assert(*opt == 3, "");
-
- struct test_constexpr_ctor
- : public optional<T>
- {
- constexpr test_constexpr_ctor(T&&) {}
- };
- }
- {
- typedef Z T;
- try
- {
- optional<T> opt(T(3));
- assert(false);
- }
- catch (int i)
- {
- assert(i == 6);
- }
- }
-#endif // _LIBCPP_STD_VER > 11
-}
diff --git a/libcxx/test/experimental/optional/optional.object/optional.object.dtor/dtor.pass.cpp b/libcxx/test/experimental/optional/optional.object/optional.object.dtor/dtor.pass.cpp
deleted file mode 100644
index 2697799f0e5..00000000000
--- a/libcxx/test/experimental/optional/optional.object/optional.object.dtor/dtor.pass.cpp
+++ /dev/null
@@ -1,59 +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();
-
-#include <experimental/optional>
-#include <type_traits>
-#include <cassert>
-
-#if _LIBCPP_STD_VER > 11
-
-using std::experimental::optional;
-
-class X
-{
-public:
- static bool dtor_called;
- X() = default;
- ~X() {dtor_called = true;}
-};
-
-bool X::dtor_called = false;
-
-#endif // _LIBCPP_STD_VER > 11
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- {
- typedef int T;
- static_assert(std::is_trivially_destructible<T>::value, "");
- static_assert(std::is_trivially_destructible<optional<T>>::value, "");
- }
- {
- typedef double T;
- static_assert(std::is_trivially_destructible<T>::value, "");
- static_assert(std::is_trivially_destructible<optional<T>>::value, "");
- }
- {
- typedef X T;
- static_assert(!std::is_trivially_destructible<T>::value, "");
- static_assert(!std::is_trivially_destructible<optional<T>>::value, "");
- {
- X x;
- optional<X> opt{x};
- assert(X::dtor_called == false);
- }
- assert(X::dtor_called == true);
- }
-#endif // _LIBCPP_STD_VER > 11
-}
diff --git a/libcxx/test/experimental/optional/optional.object/optional.object.observe/bool.pass.cpp b/libcxx/test/experimental/optional/optional.object/optional.object.observe/bool.pass.cpp
deleted file mode 100644
index a3724375cf4..00000000000
--- a/libcxx/test/experimental/optional/optional.object/optional.object.observe/bool.pass.cpp
+++ /dev/null
@@ -1,32 +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>
-
-// constexpr explicit optional<T>::operator bool() const noexcept;
-
-#include <experimental/optional>
-#include <type_traits>
-#include <cassert>
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- using std::experimental::optional;
-
- {
- constexpr optional<int> opt;
- static_assert(!opt, "");
- }
- {
- constexpr optional<int> opt(0);
- static_assert(opt, "");
- }
-#endif // _LIBCPP_STD_VER > 11
-}
diff --git a/libcxx/test/experimental/optional/optional.object/optional.object.observe/dereference.pass.cpp b/libcxx/test/experimental/optional/optional.object/optional.object.observe/dereference.pass.cpp
deleted file mode 100644
index 98e5dac9719..00000000000
--- a/libcxx/test/experimental/optional/optional.object/optional.object.observe/dereference.pass.cpp
+++ /dev/null
@@ -1,49 +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>
-
-// T& optional<T>::operator*();
-
-#ifdef _LIBCPP_DEBUG
-#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0))
-#endif
-
-#include <experimental/optional>
-#include <type_traits>
-#include <cassert>
-
-#if _LIBCPP_STD_VER > 11
-
-using std::experimental::optional;
-
-struct X
-{
- constexpr int test() const {return 3;}
- int test() {return 4;}
-};
-
-#endif // _LIBCPP_STD_VER > 11
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- {
- optional<X> opt(X{});
- assert((*opt).test() == 4);
- }
-#ifdef _LIBCPP_DEBUG
- {
- optional<X> opt;
- assert((*opt).test() == 3);
- assert(false);
- }
-#endif // _LIBCPP_DEBUG
-#endif // _LIBCPP_STD_VER > 11
-}
diff --git a/libcxx/test/experimental/optional/optional.object/optional.object.observe/dereference_const.pass.cpp b/libcxx/test/experimental/optional/optional.object/optional.object.observe/dereference_const.pass.cpp
deleted file mode 100644
index c72a57852a3..00000000000
--- a/libcxx/test/experimental/optional/optional.object/optional.object.observe/dereference_const.pass.cpp
+++ /dev/null
@@ -1,57 +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>
-
-// constexpr const T& optional<T>::operator*() const;
-
-#ifdef _LIBCPP_DEBUG
-#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0))
-#endif
-
-#include <experimental/optional>
-#include <type_traits>
-#include <cassert>
-
-#if _LIBCPP_STD_VER > 11
-
-using std::experimental::optional;
-
-struct X
-{
- constexpr int test() const {return 3;}
-};
-
-struct Y
-{
- int test() const {return 2;}
-};
-
-#endif // _LIBCPP_STD_VER > 11
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- {
- constexpr optional<X> opt(X{});
- static_assert((*opt).test() == 3, "");
- }
- {
- constexpr optional<Y> opt(Y{});
- assert((*opt).test() == 2);
- }
-#ifdef _LIBCPP_DEBUG
- {
- const optional<X> opt;
- assert((*opt).test() == 3);
- assert(false);
- }
-#endif // _LIBCPP_DEBUG
-#endif // _LIBCPP_STD_VER > 11
-}
diff --git a/libcxx/test/experimental/optional/optional.object/optional.object.observe/op_arrow.pass.cpp b/libcxx/test/experimental/optional/optional.object/optional.object.observe/op_arrow.pass.cpp
deleted file mode 100644
index e54a224d95b..00000000000
--- a/libcxx/test/experimental/optional/optional.object/optional.object.observe/op_arrow.pass.cpp
+++ /dev/null
@@ -1,52 +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>
-
-// constexpr T* optional<T>::operator->();
-
-#ifdef _LIBCPP_DEBUG
-#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0))
-#endif
-
-#include <experimental/optional>
-#include <type_traits>
-#include <cassert>
-
-#if _LIBCPP_STD_VER > 11
-
-using std::experimental::optional;
-
-struct X
-{
-#if _LIBCPP_STD_VER > 14
- constexpr int test() const {return 3;}
-#else
- constexpr int test() {return 3;}
-#endif
-};
-
-#endif // _LIBCPP_STD_VER > 11
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- {
- constexpr optional<X> opt(X{});
- static_assert(opt->test() == 3, "");
- }
-#ifdef _LIBCPP_DEBUG
- {
- optional<X> opt;
- assert(opt->test() == 3);
- assert(false);
- }
-#endif // _LIBCPP_DEBUG
-#endif // _LIBCPP_STD_VER > 11
-}
diff --git a/libcxx/test/experimental/optional/optional.object/optional.object.observe/op_arrow_const.pass.cpp b/libcxx/test/experimental/optional/optional.object/optional.object.observe/op_arrow_const.pass.cpp
deleted file mode 100644
index e813dd992a5..00000000000
--- a/libcxx/test/experimental/optional/optional.object/optional.object.observe/op_arrow_const.pass.cpp
+++ /dev/null
@@ -1,67 +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>
-
-// constexpr const T* optional<T>::operator->() const;
-
-#ifdef _LIBCPP_DEBUG
-#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0))
-#endif
-
-#include <experimental/optional>
-#include <type_traits>
-#include <cassert>
-
-#if _LIBCPP_STD_VER > 11
-
-using std::experimental::optional;
-
-struct X
-{
- constexpr int test() const {return 3;}
-};
-
-struct Y
-{
- int test() const {return 2;}
-};
-
-struct Z
-{
- const Z* operator&() const {return this;}
- constexpr int test() const {return 1;}
-};
-
-#endif // _LIBCPP_STD_VER > 11
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- {
- constexpr optional<X> opt(X{});
- static_assert(opt->test() == 3, "");
- }
- {
- constexpr optional<Y> opt(Y{});
- assert(opt->test() == 2);
- }
- {
- constexpr optional<Z> opt(Z{});
- assert(opt->test() == 1);
- }
-#ifdef _LIBCPP_DEBUG
- {
- const optional<X> opt;
- assert(opt->test() == 3);
- assert(false);
- }
-#endif // _LIBCPP_DEBUG
-#endif // _LIBCPP_STD_VER > 11
-}
diff --git a/libcxx/test/experimental/optional/optional.object/optional.object.observe/value.pass.cpp b/libcxx/test/experimental/optional/optional.object/optional.object.observe/value.pass.cpp
deleted file mode 100644
index e91805e9c8e..00000000000
--- a/libcxx/test/experimental/optional/optional.object/optional.object.observe/value.pass.cpp
+++ /dev/null
@@ -1,53 +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>
-
-// T& optional<T>::value();
-
-#include <experimental/optional>
-#include <type_traits>
-#include <cassert>
-
-#if _LIBCPP_STD_VER > 11
-
-using std::experimental::optional;
-using std::experimental::bad_optional_access;
-
-struct X
-{
- X() = default;
- X(const X&) = delete;
- constexpr int test() const {return 3;}
- int test() {return 4;}
-};
-
-#endif // _LIBCPP_STD_VER > 11
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- {
- optional<X> opt;
- opt.emplace();
- assert(opt.value().test() == 4);
- }
- {
- optional<X> opt;
- try
- {
- opt.value();
- assert(false);
- }
- catch (const bad_optional_access&)
- {
- }
- }
-#endif // _LIBCPP_STD_VER > 11
-}
diff --git a/libcxx/test/experimental/optional/optional.object/optional.object.observe/value_const.fail.cpp b/libcxx/test/experimental/optional/optional.object/optional.object.observe/value_const.fail.cpp
deleted file mode 100644
index f0f8af6da45..00000000000
--- a/libcxx/test/experimental/optional/optional.object/optional.object.observe/value_const.fail.cpp
+++ /dev/null
@@ -1,40 +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>
-
-// constexpr const T& optional<T>::value() const;
-
-#include <experimental/optional>
-#include <type_traits>
-#include <cassert>
-
-#if _LIBCPP_STD_VER > 11
-
-using std::experimental::optional;
-
-struct X
-{
- constexpr int test() const {return 3;}
- int test() {return 4;}
-};
-
-#endif // _LIBCPP_STD_VER > 11
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- {
- constexpr optional<X> opt;
- static_assert(opt.value().test() == 3, "");
- }
-#else
-#error
-#endif // _LIBCPP_STD_VER > 11
-}
diff --git a/libcxx/test/experimental/optional/optional.object/optional.object.observe/value_const.pass.cpp b/libcxx/test/experimental/optional/optional.object/optional.object.observe/value_const.pass.cpp
deleted file mode 100644
index 39bf687ff3c..00000000000
--- a/libcxx/test/experimental/optional/optional.object/optional.object.observe/value_const.pass.cpp
+++ /dev/null
@@ -1,58 +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>
-
-// constexpr const T& optional<T>::value() const;
-
-#include <experimental/optional>
-#include <type_traits>
-#include <cassert>
-
-#if _LIBCPP_STD_VER > 11
-
-using std::experimental::optional;
-using std::experimental::in_place_t;
-using std::experimental::in_place;
-using std::experimental::bad_optional_access;
-
-struct X
-{
- X() = default;
- X(const X&) = delete;
- constexpr int test() const {return 3;}
- int test() {return 4;}
-};
-
-#endif // _LIBCPP_STD_VER > 11
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- {
- constexpr optional<X> opt(in_place);
- static_assert(opt.value().test() == 3, "");
- }
- {
- const optional<X> opt(in_place);
- assert(opt.value().test() == 3);
- }
- {
- const optional<X> opt;
- try
- {
- opt.value();
- assert(false);
- }
- catch (const bad_optional_access&)
- {
- }
- }
-#endif // _LIBCPP_STD_VER > 11
-}
diff --git a/libcxx/test/experimental/optional/optional.object/optional.object.observe/value_or.pass.cpp b/libcxx/test/experimental/optional/optional.object/optional.object.observe/value_or.pass.cpp
deleted file mode 100644
index 6118c44bb5b..00000000000
--- a/libcxx/test/experimental/optional/optional.object/optional.object.observe/value_or.pass.cpp
+++ /dev/null
@@ -1,71 +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>
-
-// template <class U> T optional<T>::value_or(U&& v) &&;
-
-#include <experimental/optional>
-#include <type_traits>
-#include <cassert>
-
-#if _LIBCPP_STD_VER > 11
-
-using std::experimental::optional;
-using std::experimental::in_place_t;
-using std::experimental::in_place;
-
-struct Y
-{
- int i_;
-
- Y(int i) : i_(i) {}
-};
-
-struct X
-{
- int i_;
-
- X(int i) : i_(i) {}
- X(X&& x) : i_(x.i_) {x.i_ = 0;}
- X(const Y& y) : i_(y.i_) {}
- X(Y&& y) : i_(y.i_+1) {}
- friend constexpr bool operator==(const X& x, const X& y)
- {return x.i_ == y.i_;}
-};
-
-#endif // _LIBCPP_STD_VER > 11
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- {
- optional<X> opt(in_place, 2);
- Y y(3);
- assert(std::move(opt).value_or(y) == 2);
- assert(*opt == 0);
- }
- {
- optional<X> opt(in_place, 2);
- assert(std::move(opt).value_or(Y(3)) == 2);
- assert(*opt == 0);
- }
- {
- optional<X> opt;
- Y y(3);
- assert(std::move(opt).value_or(y) == 3);
- assert(!opt);
- }
- {
- optional<X> opt;
- assert(std::move(opt).value_or(Y(3)) == 4);
- assert(!opt);
- }
-#endif // _LIBCPP_STD_VER > 11
-}
diff --git a/libcxx/test/experimental/optional/optional.object/optional.object.observe/value_or_const.pass.cpp b/libcxx/test/experimental/optional/optional.object/optional.object.observe/value_or_const.pass.cpp
deleted file mode 100644
index d51f18abbd2..00000000000
--- a/libcxx/test/experimental/optional/optional.object/optional.object.observe/value_or_const.pass.cpp
+++ /dev/null
@@ -1,82 +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>
-
-// template <class U> constexpr T optional<T>::value_or(U&& v) const&;
-
-#include <experimental/optional>
-#include <type_traits>
-#include <cassert>
-
-#if _LIBCPP_STD_VER > 11
-
-using std::experimental::optional;
-
-struct Y
-{
- int i_;
-
- constexpr Y(int i) : i_(i) {}
-};
-
-struct X
-{
- int i_;
-
- constexpr X(int i) : i_(i) {}
- constexpr X(const Y& y) : i_(y.i_) {}
- constexpr X(Y&& y) : i_(y.i_+1) {}
- friend constexpr bool operator==(const X& x, const X& y)
- {return x.i_ == y.i_;}
-};
-
-#endif // _LIBCPP_STD_VER > 11
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- {
- constexpr optional<X> opt(2);
- constexpr Y y(3);
- static_assert(opt.value_or(y) == 2, "");
- }
- {
- constexpr optional<X> opt(2);
- static_assert(opt.value_or(Y(3)) == 2, "");
- }
- {
- constexpr optional<X> opt;
- constexpr Y y(3);
- static_assert(opt.value_or(y) == 3, "");
- }
- {
- constexpr optional<X> opt;
- static_assert(opt.value_or(Y(3)) == 4, "");
- }
- {
- const optional<X> opt(2);
- const Y y(3);
- assert(opt.value_or(y) == 2);
- }
- {
- const optional<X> opt(2);
- assert(opt.value_or(Y(3)) == 2);
- }
- {
- const optional<X> opt;
- const Y y(3);
- assert(opt.value_or(y) == 3);
- }
- {
- const optional<X> opt;
- assert(opt.value_or(Y(3)) == 4);
- }
-#endif // _LIBCPP_STD_VER > 11
-}
diff --git a/libcxx/test/experimental/optional/optional.object/optional.object.swap/swap.pass.cpp b/libcxx/test/experimental/optional/optional.object/optional.object.swap/swap.pass.cpp
deleted file mode 100644
index e0ecfdebb8c..00000000000
--- a/libcxx/test/experimental/optional/optional.object/optional.object.swap/swap.pass.cpp
+++ /dev/null
@@ -1,306 +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>
-
-// void swap(optional&)
-// noexcept(is_nothrow_move_constructible<T>::value &&
-// noexcept(swap(declval<T&>(), declval<T&>())));
-
-#include <experimental/optional>
-#include <type_traits>
-#include <cassert>
-
-#if _LIBCPP_STD_VER > 11
-
-using std::experimental::optional;
-
-class X
-{
- int i_;
-public:
- static unsigned dtor_called;
- X(int i) : i_(i) {}
- X(X&& x) = default;
- X& operator=(X&&) = default;
- ~X() {++dtor_called;}
-
- friend bool operator==(const X& x, const X& y) {return x.i_ == y.i_;}
-};
-
-unsigned X::dtor_called = 0;
-
-class Y
-{
- int i_;
-public:
- static unsigned dtor_called;
- Y(int i) : i_(i) {}
- Y(Y&&) = default;
- ~Y() {++dtor_called;}
-
- friend constexpr bool operator==(const Y& x, const Y& y) {return x.i_ == y.i_;}
- friend void swap(Y& x, Y& y) {std::swap(x.i_, y.i_);}
-};
-
-unsigned Y::dtor_called = 0;
-
-class Z
-{
- int i_;
-public:
- Z(int i) : i_(i) {}
- Z(Z&&) {throw 7;}
-
- friend constexpr bool operator==(const Z& x, const Z& y) {return x.i_ == y.i_;}
- friend void swap(Z& x, Z& y) {throw 6;}
-};
-
-
-#endif // _LIBCPP_STD_VER > 11
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- {
- optional<int> opt1;
- optional<int> opt2;
- static_assert(noexcept(opt1.swap(opt2)) == true, "");
- assert(static_cast<bool>(opt1) == false);
- assert(static_cast<bool>(opt2) == false);
- opt1.swap(opt2);
- assert(static_cast<bool>(opt1) == false);
- assert(static_cast<bool>(opt2) == false);
- }
- {
- optional<int> opt1(1);
- optional<int> opt2;
- static_assert(noexcept(opt1.swap(opt2)) == true, "");
- assert(static_cast<bool>(opt1) == true);
- assert(*opt1 == 1);
- assert(static_cast<bool>(opt2) == false);
- opt1.swap(opt2);
- assert(static_cast<bool>(opt1) == false);
- assert(static_cast<bool>(opt2) == true);
- assert(*opt2 == 1);
- }
- {
- optional<int> opt1;
- optional<int> opt2(2);
- static_assert(noexcept(opt1.swap(opt2)) == true, "");
- assert(static_cast<bool>(opt1) == false);
- assert(static_cast<bool>(opt2) == true);
- assert(*opt2 == 2);
- opt1.swap(opt2);
- assert(static_cast<bool>(opt1) == true);
- assert(*opt1 == 2);
- assert(static_cast<bool>(opt2) == false);
- }
- {
- optional<int> opt1(1);
- optional<int> opt2(2);
- static_assert(noexcept(opt1.swap(opt2)) == true, "");
- assert(static_cast<bool>(opt1) == true);
- assert(*opt1 == 1);
- assert(static_cast<bool>(opt2) == true);
- assert(*opt2 == 2);
- opt1.swap(opt2);
- assert(static_cast<bool>(opt1) == true);
- assert(*opt1 == 2);
- assert(static_cast<bool>(opt2) == true);
- assert(*opt2 == 1);
- }
- {
- optional<X> opt1;
- optional<X> opt2;
- static_assert(noexcept(opt1.swap(opt2)) == true, "");
- assert(static_cast<bool>(opt1) == false);
- assert(static_cast<bool>(opt2) == false);
- opt1.swap(opt2);
- assert(static_cast<bool>(opt1) == false);
- assert(static_cast<bool>(opt2) == false);
- assert(X::dtor_called == 0);
- }
- {
- optional<X> opt1(1);
- optional<X> opt2;
- static_assert(noexcept(opt1.swap(opt2)) == true, "");
- assert(static_cast<bool>(opt1) == true);
- assert(*opt1 == 1);
- assert(static_cast<bool>(opt2) == false);
- X::dtor_called = 0;
- opt1.swap(opt2);
- assert(X::dtor_called == 1);
- assert(static_cast<bool>(opt1) == false);
- assert(static_cast<bool>(opt2) == true);
- assert(*opt2 == 1);
- }
- {
- optional<X> opt1;
- optional<X> opt2(2);
- static_assert(noexcept(opt1.swap(opt2)) == true, "");
- assert(static_cast<bool>(opt1) == false);
- assert(static_cast<bool>(opt2) == true);
- assert(*opt2 == 2);
- X::dtor_called = 0;
- opt1.swap(opt2);
- assert(X::dtor_called == 1);
- assert(static_cast<bool>(opt1) == true);
- assert(*opt1 == 2);
- assert(static_cast<bool>(opt2) == false);
- }
- {
- optional<X> opt1(1);
- optional<X> opt2(2);
- static_assert(noexcept(opt1.swap(opt2)) == true, "");
- assert(static_cast<bool>(opt1) == true);
- assert(*opt1 == 1);
- assert(static_cast<bool>(opt2) == true);
- assert(*opt2 == 2);
- X::dtor_called = 0;
- opt1.swap(opt2);
- assert(X::dtor_called == 1); // from inside std::swap
- assert(static_cast<bool>(opt1) == true);
- assert(*opt1 == 2);
- assert(static_cast<bool>(opt2) == true);
- assert(*opt2 == 1);
- }
- {
- optional<Y> opt1;
- optional<Y> opt2;
- static_assert(noexcept(opt1.swap(opt2)) == false, "");
- assert(static_cast<bool>(opt1) == false);
- assert(static_cast<bool>(opt2) == false);
- opt1.swap(opt2);
- assert(static_cast<bool>(opt1) == false);
- assert(static_cast<bool>(opt2) == false);
- assert(Y::dtor_called == 0);
- }
- {
- optional<Y> opt1(1);
- optional<Y> opt2;
- static_assert(noexcept(opt1.swap(opt2)) == false, "");
- assert(static_cast<bool>(opt1) == true);
- assert(*opt1 == 1);
- assert(static_cast<bool>(opt2) == false);
- Y::dtor_called = 0;
- opt1.swap(opt2);
- assert(Y::dtor_called == 1);
- assert(static_cast<bool>(opt1) == false);
- assert(static_cast<bool>(opt2) == true);
- assert(*opt2 == 1);
- }
- {
- optional<Y> opt1;
- optional<Y> opt2(2);
- static_assert(noexcept(opt1.swap(opt2)) == false, "");
- assert(static_cast<bool>(opt1) == false);
- assert(static_cast<bool>(opt2) == true);
- assert(*opt2 == 2);
- Y::dtor_called = 0;
- opt1.swap(opt2);
- assert(Y::dtor_called == 1);
- assert(static_cast<bool>(opt1) == true);
- assert(*opt1 == 2);
- assert(static_cast<bool>(opt2) == false);
- }
- {
- optional<Y> opt1(1);
- optional<Y> opt2(2);
- static_assert(noexcept(opt1.swap(opt2)) == false, "");
- assert(static_cast<bool>(opt1) == true);
- assert(*opt1 == 1);
- assert(static_cast<bool>(opt2) == true);
- assert(*opt2 == 2);
- Y::dtor_called = 0;
- opt1.swap(opt2);
- assert(Y::dtor_called == 0);
- assert(static_cast<bool>(opt1) == true);
- assert(*opt1 == 2);
- assert(static_cast<bool>(opt2) == true);
- assert(*opt2 == 1);
- }
- {
- optional<Z> opt1;
- optional<Z> opt2;
- static_assert(noexcept(opt1.swap(opt2)) == false, "");
- assert(static_cast<bool>(opt1) == false);
- assert(static_cast<bool>(opt2) == false);
- opt1.swap(opt2);
- assert(static_cast<bool>(opt1) == false);
- assert(static_cast<bool>(opt2) == false);
- }
- {
- optional<Z> opt1;
- opt1.emplace(1);
- optional<Z> opt2;
- static_assert(noexcept(opt1.swap(opt2)) == false, "");
- assert(static_cast<bool>(opt1) == true);
- assert(*opt1 == 1);
- assert(static_cast<bool>(opt2) == false);
- try
- {
- opt1.swap(opt2);
- assert(false);
- }
- catch (int i)
- {
- assert(i == 7);
- }
- assert(static_cast<bool>(opt1) == true);
- assert(*opt1 == 1);
- assert(static_cast<bool>(opt2) == false);
- }
- {
- optional<Z> opt1;
- optional<Z> opt2;
- opt2.emplace(2);
- static_assert(noexcept(opt1.swap(opt2)) == false, "");
- assert(static_cast<bool>(opt1) == false);
- assert(static_cast<bool>(opt2) == true);
- assert(*opt2 == 2);
- try
- {
- opt1.swap(opt2);
- assert(false);
- }
- catch (int i)
- {
- assert(i == 7);
- }
- assert(static_cast<bool>(opt1) == false);
- assert(static_cast<bool>(opt2) == true);
- assert(*opt2 == 2);
- }
- {
- optional<Z> opt1;
- opt1.emplace(1);
- optional<Z> opt2;
- opt2.emplace(2);
- static_assert(noexcept(opt1.swap(opt2)) == false, "");
- assert(static_cast<bool>(opt1) == true);
- assert(*opt1 == 1);
- assert(static_cast<bool>(opt2) == true);
- assert(*opt2 == 2);
- try
- {
- opt1.swap(opt2);
- assert(false);
- }
- catch (int i)
- {
- assert(i == 6);
- }
- assert(static_cast<bool>(opt1) == true);
- assert(*opt1 == 1);
- assert(static_cast<bool>(opt2) == true);
- assert(*opt2 == 2);
- }
-#endif // _LIBCPP_STD_VER > 11
-}
diff --git a/libcxx/test/experimental/optional/optional.object/optional_const_void.fail.cpp b/libcxx/test/experimental/optional/optional.object/optional_const_void.fail.cpp
deleted file mode 100644
index 6999cf2451f..00000000000
--- a/libcxx/test/experimental/optional/optional.object/optional_const_void.fail.cpp
+++ /dev/null
@@ -1,25 +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>
-
-// T shall be an object type and shall satisfy the requirements of Destructible
-
-#include <experimental/optional>
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- using std::experimental::optional;
-
- optional<const void> opt;
-#else
-#error
-#endif // _LIBCPP_STD_VER > 11
-}
diff --git a/libcxx/test/experimental/optional/optional.object/optional_not_destructible.fail.cpp b/libcxx/test/experimental/optional/optional.object/optional_not_destructible.fail.cpp
deleted file mode 100644
index 61470af0119..00000000000
--- a/libcxx/test/experimental/optional/optional.object/optional_not_destructible.fail.cpp
+++ /dev/null
@@ -1,35 +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>
-
-// T shall be an object type and shall satisfy the requirements of Destructible
-
-#include <experimental/optional>
-
-#if _LIBCPP_STD_VER > 11
-
-using std::experimental::optional;
-
-struct X
-{
-private:
- ~X() {}
-};
-
-#endif // _LIBCPP_STD_VER > 11
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- optional<X> opt;
-#else
-#error
-#endif // _LIBCPP_STD_VER > 11
-}
diff --git a/libcxx/test/experimental/optional/optional.object/optional_not_noexcept_destructible.fail.cpp b/libcxx/test/experimental/optional/optional.object/optional_not_noexcept_destructible.fail.cpp
deleted file mode 100644
index eaee02014c2..00000000000
--- a/libcxx/test/experimental/optional/optional.object/optional_not_noexcept_destructible.fail.cpp
+++ /dev/null
@@ -1,34 +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>
-
-// T shall be an object type and shall satisfy the requirements of Destructible
-
-#include <experimental/optional>
-
-#if _LIBCPP_STD_VER > 11
-
-using std::experimental::optional;
-
-struct X
-{
- ~X() noexcept(false) {}
-};
-
-#endif // _LIBCPP_STD_VER > 11
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- optional<X> opt;
-#else
-#error
-#endif // _LIBCPP_STD_VER > 11
-}
diff --git a/libcxx/test/experimental/optional/optional.object/optional_void.fail.cpp b/libcxx/test/experimental/optional/optional.object/optional_void.fail.cpp
deleted file mode 100644
index f911e9a2d6d..00000000000
--- a/libcxx/test/experimental/optional/optional.object/optional_void.fail.cpp
+++ /dev/null
@@ -1,25 +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>
-
-// T shall be an object type and shall satisfy the requirements of Destructible
-
-#include <experimental/optional>
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- using std::experimental::optional;
-
- optional<void> opt;
-#else
-#error
-#endif // _LIBCPP_STD_VER > 11
-}
diff --git a/libcxx/test/experimental/optional/optional.object/types.pass.cpp b/libcxx/test/experimental/optional/optional.object/types.pass.cpp
deleted file mode 100644
index 8b9ad2e1957..00000000000
--- a/libcxx/test/experimental/optional/optional.object/types.pass.cpp
+++ /dev/null
@@ -1,43 +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>
-
-// template <class T>
-// class optional
-// {
-// public:
-// typedef T value_type;
-// ...
-
-#include <experimental/optional>
-#include <type_traits>
-
-#if _LIBCPP_STD_VER > 11
-
-using std::experimental::optional;
-
-template <class Opt, class T>
-void
-test()
-{
- static_assert(std::is_same<typename Opt::value_type, T>::value, "");
-}
-
-#endif // _LIBCPP_STD_VER > 11
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- test<optional<int>, int>();
- test<optional<const int>, const int>();
- test<optional<double>, double>();
- test<optional<const double>, const double>();
-#endif // _LIBCPP_STD_VER > 11
-}
diff --git a/libcxx/test/experimental/optional/optional.relops/equal.pass.cpp b/libcxx/test/experimental/optional/optional.relops/equal.pass.cpp
deleted file mode 100644
index 03b9d3fda5c..00000000000
--- a/libcxx/test/experimental/optional/optional.relops/equal.pass.cpp
+++ /dev/null
@@ -1,79 +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>
-
-// template <class T> constexpr bool operator==(const optional<T>& x, const optional<T>& y);
-
-#include <experimental/optional>
-#include <type_traits>
-#include <cassert>
-
-#if _LIBCPP_STD_VER > 11
-
-using std::experimental::optional;
-
-struct X
-{
- int i_;
-
- constexpr X(int i) : i_(i) {}
-};
-
-constexpr bool operator == ( const X &lhs, const X &rhs )
- { return lhs.i_ == rhs.i_ ; }
-
-#endif
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- {
- typedef X T;
- typedef optional<T> O;
-
- constexpr O o1; // disengaged
- constexpr O o2; // disengaged
- constexpr O o3{1}; // engaged
- constexpr O o4{2}; // engaged
- constexpr O o5{1}; // engaged
-
- static_assert ( o1 == o1 , "" );
- static_assert ( o1 == o2 , "" );
- static_assert ( !(o1 == o3), "" );
- static_assert ( !(o1 == o4), "" );
- static_assert ( !(o1 == o5), "" );
-
- static_assert ( o2 == o1 , "" );
- static_assert ( o2 == o2 , "" );
- static_assert ( !(o2 == o3), "" );
- static_assert ( !(o2 == o4), "" );
- static_assert ( !(o2 == o5), "" );
-
- static_assert ( !(o3 == o1), "" );
- static_assert ( !(o3 == o2), "" );
- static_assert ( o3 == o3 , "" );
- static_assert ( !(o3 == o4), "" );
- static_assert ( o3 == o5 , "" );
-
- static_assert ( !(o4 == o1), "" );
- static_assert ( !(o4 == o2), "" );
- static_assert ( !(o4 == o3), "" );
- static_assert ( o4 == o4 , "" );
- static_assert ( !(o4 == o5), "" );
-
- static_assert ( !(o5 == o1), "" );
- static_assert ( !(o5 == o2), "" );
- static_assert ( o5 == o3 , "" );
- static_assert ( !(o5 == o4), "" );
- static_assert ( o5 == o5 , "" );
-
- }
-#endif
-}
diff --git a/libcxx/test/experimental/optional/optional.relops/greater_equal.pass.cpp b/libcxx/test/experimental/optional/optional.relops/greater_equal.pass.cpp
deleted file mode 100644
index 98d6855f931..00000000000
--- a/libcxx/test/experimental/optional/optional.relops/greater_equal.pass.cpp
+++ /dev/null
@@ -1,75 +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>
-
-// template <class T> constexpr bool operator>= (const optional<T>& x, const optional<T>& y);
-
-#include <experimental/optional>
-
-#if _LIBCPP_STD_VER > 11
-
-using std::experimental::optional;
-
-struct X
-{
- int i_;
-
- constexpr X(int i) : i_(i) {}
-};
-
-constexpr bool operator < ( const X &lhs, const X &rhs )
- { return lhs.i_ < rhs.i_ ; }
-
-#endif
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- {
- typedef optional<X> O;
-
- constexpr O o1; // disengaged
- constexpr O o2; // disengaged
- constexpr O o3{1}; // engaged
- constexpr O o4{2}; // engaged
- constexpr O o5{1}; // engaged
-
- static_assert ( (o1 >= o1), "" );
- static_assert ( (o1 >= o2), "" );
- static_assert ( !(o1 >= o3), "" );
- static_assert ( !(o1 >= o4), "" );
- static_assert ( !(o1 >= o5), "" );
-
- static_assert ( (o2 >= o1), "" );
- static_assert ( (o2 >= o2), "" );
- static_assert ( !(o2 >= o3), "" );
- static_assert ( !(o2 >= o4), "" );
- static_assert ( !(o2 >= o5), "" );
-
- static_assert ( (o3 >= o1), "" );
- static_assert ( (o3 >= o2), "" );
- static_assert ( (o3 >= o3), "" );
- static_assert ( !(o3 >= o4), "" );
- static_assert ( (o3 >= o5), "" );
-
- static_assert ( (o4 >= o1), "" );
- static_assert ( (o4 >= o2), "" );
- static_assert ( (o4 >= o3), "" );
- static_assert ( (o4 >= o4), "" );
- static_assert ( (o4 >= o5), "" );
-
- static_assert ( (o5 >= o1), "" );
- static_assert ( (o5 >= o2), "" );
- static_assert ( (o5 >= o3), "" );
- static_assert ( !(o5 >= o4), "" );
- static_assert ( (o5 >= o5), "" );
- }
-#endif
-}
diff --git a/libcxx/test/experimental/optional/optional.relops/greater_than.pass.cpp b/libcxx/test/experimental/optional/optional.relops/greater_than.pass.cpp
deleted file mode 100644
index d51bd4f2ac4..00000000000
--- a/libcxx/test/experimental/optional/optional.relops/greater_than.pass.cpp
+++ /dev/null
@@ -1,75 +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>
-
-// template <class T> constexpr bool operator> (const optional<T>& x, const optional<T>& y);
-
-#include <experimental/optional>
-
-#if _LIBCPP_STD_VER > 11
-
-using std::experimental::optional;
-
-struct X
-{
- int i_;
-
- constexpr X(int i) : i_(i) {}
-};
-
-constexpr bool operator < ( const X &lhs, const X &rhs )
- { return lhs.i_ < rhs.i_ ; }
-
-#endif
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- {
- typedef optional<X> O;
-
- constexpr O o1; // disengaged
- constexpr O o2; // disengaged
- constexpr O o3{1}; // engaged
- constexpr O o4{2}; // engaged
- constexpr O o5{1}; // engaged
-
- static_assert ( !(o1 > o1), "" );
- static_assert ( !(o1 > o2), "" );
- static_assert ( !(o1 > o3), "" );
- static_assert ( !(o1 > o4), "" );
- static_assert ( !(o1 > o5), "" );
-
- static_assert ( !(o2 > o1), "" );
- static_assert ( !(o2 > o2), "" );
- static_assert ( !(o2 > o3), "" );
- static_assert ( !(o2 > o4), "" );
- static_assert ( !(o2 > o5), "" );
-
- static_assert ( (o3 > o1), "" );
- static_assert ( (o3 > o2), "" );
- static_assert ( !(o3 > o3), "" );
- static_assert ( !(o3 > o4), "" );
- static_assert ( !(o3 > o5), "" );
-
- static_assert ( (o4 > o1), "" );
- static_assert ( (o4 > o2), "" );
- static_assert ( (o4 > o3), "" );
- static_assert ( !(o4 > o4), "" );
- static_assert ( (o4 > o5), "" );
-
- static_assert ( (o5 > o1), "" );
- static_assert ( (o5 > o2), "" );
- static_assert ( !(o5 > o3), "" );
- static_assert ( !(o5 > o4), "" );
- static_assert ( !(o5 > o5), "" );
- }
-#endif
-}
diff --git a/libcxx/test/experimental/optional/optional.relops/less_equal.pass.cpp b/libcxx/test/experimental/optional/optional.relops/less_equal.pass.cpp
deleted file mode 100644
index 326f3a89649..00000000000
--- a/libcxx/test/experimental/optional/optional.relops/less_equal.pass.cpp
+++ /dev/null
@@ -1,75 +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>
-
-// template <class T> constexpr bool operator<= (const optional<T>& x, const optional<T>& y);
-
-#include <experimental/optional>
-
-#if _LIBCPP_STD_VER > 11
-
-using std::experimental::optional;
-
-struct X
-{
- int i_;
-
- constexpr X(int i) : i_(i) {}
-};
-
-constexpr bool operator < ( const X &lhs, const X &rhs )
- { return lhs.i_ < rhs.i_ ; }
-
-#endif
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- {
- typedef optional<X> O;
-
- constexpr O o1; // disengaged
- constexpr O o2; // disengaged
- constexpr O o3{1}; // engaged
- constexpr O o4{2}; // engaged
- constexpr O o5{1}; // engaged
-
- static_assert ( (o1 <= o1), "" );
- static_assert ( (o1 <= o2), "" );
- static_assert ( (o1 <= o3), "" );
- static_assert ( (o1 <= o4), "" );
- static_assert ( (o1 <= o5), "" );
-
- static_assert ( (o2 <= o1), "" );
- static_assert ( (o2 <= o2), "" );
- static_assert ( (o2 <= o3), "" );
- static_assert ( (o2 <= o4), "" );
- static_assert ( (o2 <= o5), "" );
-
- static_assert ( !(o3 <= o1), "" );
- static_assert ( !(o3 <= o2), "" );
- static_assert ( (o3 <= o3), "" );
- static_assert ( (o3 <= o4), "" );
- static_assert ( (o3 <= o5), "" );
-
- static_assert ( !(o4 <= o1), "" );
- static_assert ( !(o4 <= o2), "" );
- static_assert ( !(o4 <= o3), "" );
- static_assert ( (o4 <= o4), "" );
- static_assert ( !(o4 <= o5), "" );
-
- static_assert ( !(o5 <= o1), "" );
- static_assert ( !(o5 <= o2), "" );
- static_assert ( (o5 <= o3), "" );
- static_assert ( (o5 <= o4), "" );
- static_assert ( (o5 <= o5), "" );
- }
-#endif
-}
diff --git a/libcxx/test/experimental/optional/optional.relops/less_than.pass.cpp b/libcxx/test/experimental/optional/optional.relops/less_than.pass.cpp
deleted file mode 100644
index 37f7e194298..00000000000
--- a/libcxx/test/experimental/optional/optional.relops/less_than.pass.cpp
+++ /dev/null
@@ -1,75 +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>
-
-// template <class T> constexpr bool operator< (const optional<T>& x, const optional<T>& y);
-
-#include <experimental/optional>
-
-#if _LIBCPP_STD_VER > 11
-
-using std::experimental::optional;
-
-struct X
-{
- int i_;
-
- constexpr X(int i) : i_(i) {}
-};
-
-constexpr bool operator < ( const X &lhs, const X &rhs )
- { return lhs.i_ < rhs.i_ ; }
-
-#endif
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- {
- typedef optional<X> O;
-
- constexpr O o1; // disengaged
- constexpr O o2; // disengaged
- constexpr O o3{1}; // engaged
- constexpr O o4{2}; // engaged
- constexpr O o5{1}; // engaged
-
- static_assert ( !(o1 < o1), "" );
- static_assert ( !(o1 < o2), "" );
- static_assert ( (o1 < o3), "" );
- static_assert ( (o1 < o4), "" );
- static_assert ( (o1 < o5), "" );
-
- static_assert ( !(o2 < o1), "" );
- static_assert ( !(o2 < o2), "" );
- static_assert ( (o2 < o3), "" );
- static_assert ( (o2 < o4), "" );
- static_assert ( (o2 < o5), "" );
-
- static_assert ( !(o3 < o1), "" );
- static_assert ( !(o3 < o2), "" );
- static_assert ( !(o3 < o3), "" );
- static_assert ( (o3 < o4), "" );
- static_assert ( !(o3 < o5), "" );
-
- static_assert ( !(o4 < o1), "" );
- static_assert ( !(o4 < o2), "" );
- static_assert ( !(o4 < o3), "" );
- static_assert ( !(o4 < o4), "" );
- static_assert ( !(o4 < o5), "" );
-
- static_assert ( !(o5 < o1), "" );
- static_assert ( !(o5 < o2), "" );
- static_assert ( !(o5 < o3), "" );
- static_assert ( (o5 < o4), "" );
- static_assert ( !(o5 < o5), "" );
- }
-#endif
-}
diff --git a/libcxx/test/experimental/optional/optional.relops/not_equal.pass.cpp b/libcxx/test/experimental/optional/optional.relops/not_equal.pass.cpp
deleted file mode 100644
index f386c7e361e..00000000000
--- a/libcxx/test/experimental/optional/optional.relops/not_equal.pass.cpp
+++ /dev/null
@@ -1,79 +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>
-
-// template <class T> constexpr bool operator!=(const optional<T>& x, const optional<T>& y);
-
-#include <experimental/optional>
-#include <type_traits>
-#include <cassert>
-
-#if _LIBCPP_STD_VER > 11
-
-using std::experimental::optional;
-
-struct X
-{
- int i_;
-
- constexpr X(int i) : i_(i) {}
-};
-
-constexpr bool operator == ( const X &lhs, const X &rhs )
- { return lhs.i_ == rhs.i_ ; }
-
-#endif
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- {
- typedef X T;
- typedef optional<T> O;
-
- constexpr O o1; // disengaged
- constexpr O o2; // disengaged
- constexpr O o3{1}; // engaged
- constexpr O o4{2}; // engaged
- constexpr O o5{1}; // engaged
-
- static_assert ( !(o1 != o1), "" );
- static_assert ( !(o1 != o2), "" );
- static_assert ( (o1 != o3), "" );
- static_assert ( (o1 != o4), "" );
- static_assert ( (o1 != o5), "" );
-
- static_assert ( !(o2 != o1), "" );
- static_assert ( !(o2 != o2), "" );
- static_assert ( (o2 != o3), "" );
- static_assert ( (o2 != o4), "" );
- static_assert ( (o2 != o5), "" );
-
- static_assert ( (o3 != o1), "" );
- static_assert ( (o3 != o2), "" );
- static_assert ( !(o3 != o3), "" );
- static_assert ( (o3 != o4), "" );
- static_assert ( !(o3 != o5), "" );
-
- static_assert ( (o4 != o1), "" );
- static_assert ( (o4 != o2), "" );
- static_assert ( (o4 != o3), "" );
- static_assert ( !(o4 != o4), "" );
- static_assert ( (o4 != o5), "" );
-
- static_assert ( (o5 != o1), "" );
- static_assert ( (o5 != o2), "" );
- static_assert ( !(o5 != o3), "" );
- static_assert ( (o5 != o4), "" );
- static_assert ( !(o5 != o5), "" );
-
- }
-#endif
-}
diff --git a/libcxx/test/experimental/optional/optional.specalg/make_optional.pass.cpp b/libcxx/test/experimental/optional/optional.specalg/make_optional.pass.cpp
deleted file mode 100644
index cc95e6110e8..00000000000
--- a/libcxx/test/experimental/optional/optional.specalg/make_optional.pass.cpp
+++ /dev/null
@@ -1,50 +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>
-
-// template <class T>
-// constexpr
-// optional<typename decay<T>::type>
-// make_optional(T&& v);
-
-#include <experimental/optional>
-#include <string>
-#include <memory>
-#include <cassert>
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- using std::experimental::optional;
- using std::experimental::make_optional;
-
- {
- optional<int> opt = make_optional(2);
- assert(*opt == 2);
- }
- {
- std::string s("123");
- optional<std::string> opt = make_optional(s);
- assert(*opt == s);
- }
- {
- std::string s("123");
- optional<std::string> opt = make_optional(std::move(s));
- assert(*opt == "123");
- assert(s.empty());
- }
- {
- std::unique_ptr<int> s(new int(3));
- optional<std::unique_ptr<int>> opt = make_optional(std::move(s));
- assert(**opt == 3);
- assert(s == nullptr);
- }
-#endif // _LIBCPP_STD_VER > 11
-}
diff --git a/libcxx/test/experimental/optional/optional.specalg/swap.pass.cpp b/libcxx/test/experimental/optional/optional.specalg/swap.pass.cpp
deleted file mode 100644
index e31d2173425..00000000000
--- a/libcxx/test/experimental/optional/optional.specalg/swap.pass.cpp
+++ /dev/null
@@ -1,305 +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>
-
-// template <class T> void swap(optional<T>& x, optional<T>& y)
-// noexcept(noexcept(x.swap(y)));
-
-#include <experimental/optional>
-#include <type_traits>
-#include <cassert>
-
-#if _LIBCPP_STD_VER > 11
-
-using std::experimental::optional;
-
-class X
-{
- int i_;
-public:
- static unsigned dtor_called;
- X(int i) : i_(i) {}
- X(X&& x) = default;
- X& operator=(X&&) = default;
- ~X() {++dtor_called;}
-
- friend bool operator==(const X& x, const X& y) {return x.i_ == y.i_;}
-};
-
-unsigned X::dtor_called = 0;
-
-class Y
-{
- int i_;
-public:
- static unsigned dtor_called;
- Y(int i) : i_(i) {}
- Y(Y&&) = default;
- ~Y() {++dtor_called;}
-
- friend constexpr bool operator==(const Y& x, const Y& y) {return x.i_ == y.i_;}
- friend void swap(Y& x, Y& y) {std::swap(x.i_, y.i_);}
-};
-
-unsigned Y::dtor_called = 0;
-
-class Z
-{
- int i_;
-public:
- Z(int i) : i_(i) {}
- Z(Z&&) {throw 7;}
-
- friend constexpr bool operator==(const Z& x, const Z& y) {return x.i_ == y.i_;}
- friend void swap(Z& x, Z& y) {throw 6;}
-};
-
-
-#endif // _LIBCPP_STD_VER > 11
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- {
- optional<int> opt1;
- optional<int> opt2;
- static_assert(noexcept(swap(opt1, opt2)) == true, "");
- assert(static_cast<bool>(opt1) == false);
- assert(static_cast<bool>(opt2) == false);
- swap(opt1, opt2);
- assert(static_cast<bool>(opt1) == false);
- assert(static_cast<bool>(opt2) == false);
- }
- {
- optional<int> opt1(1);
- optional<int> opt2;
- static_assert(noexcept(swap(opt1, opt2)) == true, "");
- assert(static_cast<bool>(opt1) == true);
- assert(*opt1 == 1);
- assert(static_cast<bool>(opt2) == false);
- swap(opt1, opt2);
- assert(static_cast<bool>(opt1) == false);
- assert(static_cast<bool>(opt2) == true);
- assert(*opt2 == 1);
- }
- {
- optional<int> opt1;
- optional<int> opt2(2);
- static_assert(noexcept(swap(opt1, opt2)) == true, "");
- assert(static_cast<bool>(opt1) == false);
- assert(static_cast<bool>(opt2) == true);
- assert(*opt2 == 2);
- swap(opt1, opt2);
- assert(static_cast<bool>(opt1) == true);
- assert(*opt1 == 2);
- assert(static_cast<bool>(opt2) == false);
- }
- {
- optional<int> opt1(1);
- optional<int> opt2(2);
- static_assert(noexcept(swap(opt1, opt2)) == true, "");
- assert(static_cast<bool>(opt1) == true);
- assert(*opt1 == 1);
- assert(static_cast<bool>(opt2) == true);
- assert(*opt2 == 2);
- swap(opt1, opt2);
- assert(static_cast<bool>(opt1) == true);
- assert(*opt1 == 2);
- assert(static_cast<bool>(opt2) == true);
- assert(*opt2 == 1);
- }
- {
- optional<X> opt1;
- optional<X> opt2;
- static_assert(noexcept(swap(opt1, opt2)) == true, "");
- assert(static_cast<bool>(opt1) == false);
- assert(static_cast<bool>(opt2) == false);
- swap(opt1, opt2);
- assert(static_cast<bool>(opt1) == false);
- assert(static_cast<bool>(opt2) == false);
- assert(X::dtor_called == 0);
- }
- {
- optional<X> opt1(1);
- optional<X> opt2;
- static_assert(noexcept(swap(opt1, opt2)) == true, "");
- assert(static_cast<bool>(opt1) == true);
- assert(*opt1 == 1);
- assert(static_cast<bool>(opt2) == false);
- X::dtor_called = 0;
- swap(opt1, opt2);
- assert(X::dtor_called == 1);
- assert(static_cast<bool>(opt1) == false);
- assert(static_cast<bool>(opt2) == true);
- assert(*opt2 == 1);
- }
- {
- optional<X> opt1;
- optional<X> opt2(2);
- static_assert(noexcept(swap(opt1, opt2)) == true, "");
- assert(static_cast<bool>(opt1) == false);
- assert(static_cast<bool>(opt2) == true);
- assert(*opt2 == 2);
- X::dtor_called = 0;
- swap(opt1, opt2);
- assert(X::dtor_called == 1);
- assert(static_cast<bool>(opt1) == true);
- assert(*opt1 == 2);
- assert(static_cast<bool>(opt2) == false);
- }
- {
- optional<X> opt1(1);
- optional<X> opt2(2);
- static_assert(noexcept(swap(opt1, opt2)) == true, "");
- assert(static_cast<bool>(opt1) == true);
- assert(*opt1 == 1);
- assert(static_cast<bool>(opt2) == true);
- assert(*opt2 == 2);
- X::dtor_called = 0;
- swap(opt1, opt2);
- assert(X::dtor_called == 1); // from inside std::swap
- assert(static_cast<bool>(opt1) == true);
- assert(*opt1 == 2);
- assert(static_cast<bool>(opt2) == true);
- assert(*opt2 == 1);
- }
- {
- optional<Y> opt1;
- optional<Y> opt2;
- static_assert(noexcept(swap(opt1, opt2)) == false, "");
- assert(static_cast<bool>(opt1) == false);
- assert(static_cast<bool>(opt2) == false);
- swap(opt1, opt2);
- assert(static_cast<bool>(opt1) == false);
- assert(static_cast<bool>(opt2) == false);
- assert(Y::dtor_called == 0);
- }
- {
- optional<Y> opt1(1);
- optional<Y> opt2;
- static_assert(noexcept(swap(opt1, opt2)) == false, "");
- assert(static_cast<bool>(opt1) == true);
- assert(*opt1 == 1);
- assert(static_cast<bool>(opt2) == false);
- Y::dtor_called = 0;
- swap(opt1, opt2);
- assert(Y::dtor_called == 1);
- assert(static_cast<bool>(opt1) == false);
- assert(static_cast<bool>(opt2) == true);
- assert(*opt2 == 1);
- }
- {
- optional<Y> opt1;
- optional<Y> opt2(2);
- static_assert(noexcept(swap(opt1, opt2)) == false, "");
- assert(static_cast<bool>(opt1) == false);
- assert(static_cast<bool>(opt2) == true);
- assert(*opt2 == 2);
- Y::dtor_called = 0;
- swap(opt1, opt2);
- assert(Y::dtor_called == 1);
- assert(static_cast<bool>(opt1) == true);
- assert(*opt1 == 2);
- assert(static_cast<bool>(opt2) == false);
- }
- {
- optional<Y> opt1(1);
- optional<Y> opt2(2);
- static_assert(noexcept(swap(opt1, opt2)) == false, "");
- assert(static_cast<bool>(opt1) == true);
- assert(*opt1 == 1);
- assert(static_cast<bool>(opt2) == true);
- assert(*opt2 == 2);
- Y::dtor_called = 0;
- swap(opt1, opt2);
- assert(Y::dtor_called == 0);
- assert(static_cast<bool>(opt1) == true);
- assert(*opt1 == 2);
- assert(static_cast<bool>(opt2) == true);
- assert(*opt2 == 1);
- }
- {
- optional<Z> opt1;
- optional<Z> opt2;
- static_assert(noexcept(swap(opt1, opt2)) == false, "");
- assert(static_cast<bool>(opt1) == false);
- assert(static_cast<bool>(opt2) == false);
- swap(opt1, opt2);
- assert(static_cast<bool>(opt1) == false);
- assert(static_cast<bool>(opt2) == false);
- }
- {
- optional<Z> opt1;
- opt1.emplace(1);
- optional<Z> opt2;
- static_assert(noexcept(swap(opt1, opt2)) == false, "");
- assert(static_cast<bool>(opt1) == true);
- assert(*opt1 == 1);
- assert(static_cast<bool>(opt2) == false);
- try
- {
- swap(opt1, opt2);
- assert(false);
- }
- catch (int i)
- {
- assert(i == 7);
- }
- assert(static_cast<bool>(opt1) == true);
- assert(*opt1 == 1);
- assert(static_cast<bool>(opt2) == false);
- }
- {
- optional<Z> opt1;
- optional<Z> opt2;
- opt2.emplace(2);
- static_assert(noexcept(swap(opt1, opt2)) == false, "");
- assert(static_cast<bool>(opt1) == false);
- assert(static_cast<bool>(opt2) == true);
- assert(*opt2 == 2);
- try
- {
- swap(opt1, opt2);
- assert(false);
- }
- catch (int i)
- {
- assert(i == 7);
- }
- assert(static_cast<bool>(opt1) == false);
- assert(static_cast<bool>(opt2) == true);
- assert(*opt2 == 2);
- }
- {
- optional<Z> opt1;
- opt1.emplace(1);
- optional<Z> opt2;
- opt2.emplace(2);
- static_assert(noexcept(swap(opt1, opt2)) == false, "");
- assert(static_cast<bool>(opt1) == true);
- assert(*opt1 == 1);
- assert(static_cast<bool>(opt2) == true);
- assert(*opt2 == 2);
- try
- {
- swap(opt1, opt2);
- assert(false);
- }
- catch (int i)
- {
- assert(i == 6);
- }
- assert(static_cast<bool>(opt1) == true);
- assert(*opt1 == 1);
- assert(static_cast<bool>(opt2) == true);
- assert(*opt2 == 2);
- }
-#endif // _LIBCPP_STD_VER > 11
-}
diff --git a/libcxx/test/experimental/optional/optional.syn/optional_const_in_place_t.fail.cpp b/libcxx/test/experimental/optional/optional.syn/optional_const_in_place_t.fail.cpp
deleted file mode 100644
index 60836ae2396..00000000000
--- a/libcxx/test/experimental/optional/optional.syn/optional_const_in_place_t.fail.cpp
+++ /dev/null
@@ -1,28 +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>
-
-// A program that necessitates the instantiation of template optional for
-// (possibly cv-qualified) in_place_t is ill-formed.
-
-#include <experimental/optional>
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- using std::experimental::optional;
- using std::experimental::in_place_t;
- using std::experimental::in_place;
-
- optional<const in_place_t> opt;
-#else
-#error
-#endif // _LIBCPP_STD_VER > 11
-}
diff --git a/libcxx/test/experimental/optional/optional.syn/optional_const_lvalue_ref.fail.cpp b/libcxx/test/experimental/optional/optional.syn/optional_const_lvalue_ref.fail.cpp
deleted file mode 100644
index 9a4ba1a027a..00000000000
--- a/libcxx/test/experimental/optional/optional.syn/optional_const_lvalue_ref.fail.cpp
+++ /dev/null
@@ -1,26 +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>
-
-// A program that necessitates the instantiation of template optional for a
-// reference type is ill-formed.
-
-#include <experimental/optional>
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- using std::experimental::optional;
-
- optional<const int&> opt;
-#else
-#error
-#endif // _LIBCPP_STD_VER > 11
-}
diff --git a/libcxx/test/experimental/optional/optional.syn/optional_const_nullopt_t.fail.cpp b/libcxx/test/experimental/optional/optional.syn/optional_const_nullopt_t.fail.cpp
deleted file mode 100644
index f6220bda69c..00000000000
--- a/libcxx/test/experimental/optional/optional.syn/optional_const_nullopt_t.fail.cpp
+++ /dev/null
@@ -1,28 +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>
-
-// A program that necessitates the instantiation of template optional for
-// (possibly cv-qualified) null_opt_t is ill-formed.
-
-#include <experimental/optional>
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- using std::experimental::optional;
- using std::experimental::nullopt_t;
- using std::experimental::nullopt;
-
- optional<const nullopt_t> opt;
-#else
-#error
-#endif // _LIBCPP_STD_VER > 11
-}
diff --git a/libcxx/test/experimental/optional/optional.syn/optional_in_place_t.fail.cpp b/libcxx/test/experimental/optional/optional.syn/optional_in_place_t.fail.cpp
deleted file mode 100644
index 12f291fcd22..00000000000
--- a/libcxx/test/experimental/optional/optional.syn/optional_in_place_t.fail.cpp
+++ /dev/null
@@ -1,28 +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>
-
-// A program that necessitates the instantiation of template optional for
-// (possibly cv-qualified) in_place_t is ill-formed.
-
-#include <experimental/optional>
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- using std::experimental::optional;
- using std::experimental::in_place_t;
- using std::experimental::in_place;
-
- optional<in_place_t> opt;
-#else
-#error
-#endif // _LIBCPP_STD_VER > 11
-}
diff --git a/libcxx/test/experimental/optional/optional.syn/optional_includes_initializer_list.pass.cpp b/libcxx/test/experimental/optional/optional.syn/optional_includes_initializer_list.pass.cpp
deleted file mode 100644
index 7e6697ff6e5..00000000000
--- a/libcxx/test/experimental/optional/optional.syn/optional_includes_initializer_list.pass.cpp
+++ /dev/null
@@ -1,23 +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>
-
-// #include <initializer_list>
-
-#include <experimental/optional>
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- using std::experimental::optional;
-
- std::initializer_list<int> list;
-#endif // _LIBCPP_STD_VER > 11
-}
diff --git a/libcxx/test/experimental/optional/optional.syn/optional_lvalue_ref.fail.cpp b/libcxx/test/experimental/optional/optional.syn/optional_lvalue_ref.fail.cpp
deleted file mode 100644
index 850df342aef..00000000000
--- a/libcxx/test/experimental/optional/optional.syn/optional_lvalue_ref.fail.cpp
+++ /dev/null
@@ -1,26 +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>
-
-// A program that necessitates the instantiation of template optional for a
-// reference type is ill-formed.
-
-#include <experimental/optional>
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- using std::experimental::optional;
-
- optional<int&> opt;
-#else
-#error
-#endif // _LIBCPP_STD_VER > 11
-}
diff --git a/libcxx/test/experimental/optional/optional.syn/optional_nullopt_t.fail.cpp b/libcxx/test/experimental/optional/optional.syn/optional_nullopt_t.fail.cpp
deleted file mode 100644
index 20955ace834..00000000000
--- a/libcxx/test/experimental/optional/optional.syn/optional_nullopt_t.fail.cpp
+++ /dev/null
@@ -1,28 +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>
-
-// A program that necessitates the instantiation of template optional for
-// (possibly cv-qualified) null_opt_t is ill-formed.
-
-#include <experimental/optional>
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- using std::experimental::optional;
- using std::experimental::nullopt_t;
- using std::experimental::nullopt;
-
- optional<nullopt_t> opt;
-#else
-#error
-#endif // _LIBCPP_STD_VER > 11
-}
diff --git a/libcxx/test/experimental/optional/optional.syn/optional_rvalue_ref.fail.cpp b/libcxx/test/experimental/optional/optional.syn/optional_rvalue_ref.fail.cpp
deleted file mode 100644
index d773e993df2..00000000000
--- a/libcxx/test/experimental/optional/optional.syn/optional_rvalue_ref.fail.cpp
+++ /dev/null
@@ -1,26 +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>
-
-// A program that necessitates the instantiation of template optional for a
-// reference type is ill-formed.
-
-#include <experimental/optional>
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- using std::experimental::optional;
-
- optional<int&&> opt;
-#else
-#error
-#endif // _LIBCPP_STD_VER > 11
-}
diff --git a/libcxx/test/experimental/optional/version.pass.cpp b/libcxx/test/experimental/optional/version.pass.cpp
deleted file mode 100644
index 585b7a24eea..00000000000
--- a/libcxx/test/experimental/optional/version.pass.cpp
+++ /dev/null
@@ -1,20 +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>
-
-#include <experimental/optional>
-
-#ifndef _LIBCPP_VERSION
-#error _LIBCPP_VERSION not defined
-#endif
-
-int main()
-{
-}
OpenPOWER on IntegriCloud