diff options
Diffstat (limited to 'libcxx/test/experimental/optional')
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() -{ -} |