diff --git a/include/experimental/optional b/include/experimental/optional index b251748fb..d68cefdf6 100644 --- a/include/experimental/optional +++ b/include/experimental/optional @@ -8,915 +8,4 @@ // //===----------------------------------------------------------------------===// -#ifndef _LIBCPP_EXPERIMENTAL_OPTIONAL -#define _LIBCPP_EXPERIMENTAL_OPTIONAL - -/* - optional synopsis - -// C++1y - -namespace std { namespace experimental { inline namespace fundamentals_v1 { - - // 5.3, optional for object types - template class optional; - - // 5.4, In-place construction - struct in_place_t{}; - constexpr in_place_t in_place{}; - - // 5.5, No-value state indicator - struct nullopt_t{see below}; - constexpr nullopt_t nullopt(unspecified); - - // 5.6, Class bad_optional_access - class bad_optional_access; - - // 5.7, Relational operators - template - constexpr bool operator==(const optional&, const optional&); - template - constexpr bool operator!=(const optional&, const optional&); - template - constexpr bool operator<(const optional&, const optional&); - template - constexpr bool operator>(const optional&, const optional&); - template - constexpr bool operator<=(const optional&, const optional&); - template - constexpr bool operator>=(const optional&, const optional&); - - // 5.8, Comparison with nullopt - template constexpr bool operator==(const optional&, nullopt_t) noexcept; - template constexpr bool operator==(nullopt_t, const optional&) noexcept; - template constexpr bool operator!=(const optional&, nullopt_t) noexcept; - template constexpr bool operator!=(nullopt_t, const optional&) noexcept; - template constexpr bool operator<(const optional&, nullopt_t) noexcept; - template constexpr bool operator<(nullopt_t, const optional&) noexcept; - template constexpr bool operator<=(const optional&, nullopt_t) noexcept; - template constexpr bool operator<=(nullopt_t, const optional&) noexcept; - template constexpr bool operator>(const optional&, nullopt_t) noexcept; - template constexpr bool operator>(nullopt_t, const optional&) noexcept; - template constexpr bool operator>=(const optional&, nullopt_t) noexcept; - template constexpr bool operator>=(nullopt_t, const optional&) noexcept; - - // 5.9, Comparison with T - template constexpr bool operator==(const optional&, const T&); - template constexpr bool operator==(const T&, const optional&); - template constexpr bool operator!=(const optional&, const T&); - template constexpr bool operator!=(const T&, const optional&); - template constexpr bool operator<(const optional&, const T&); - template constexpr bool operator<(const T&, const optional&); - template constexpr bool operator<=(const optional&, const T&); - template constexpr bool operator<=(const T&, const optional&); - template constexpr bool operator>(const optional&, const T&); - template constexpr bool operator>(const T&, const optional&); - template constexpr bool operator>=(const optional&, const T&); - template constexpr bool operator>=(const T&, const optional&); - - // 5.10, Specialized algorithms - template void swap(optional&, optional&) noexcept(see below); - template constexpr optional make_optional(T&&); - - template - class optional - { - public: - typedef T value_type; - - // 5.3.1, Constructors - constexpr optional() noexcept; - constexpr optional(nullopt_t) noexcept; - optional(const optional&); - optional(optional&&) noexcept(see below); - constexpr optional(const T&); - constexpr optional(T&&); - template constexpr explicit optional(in_place_t, Args&&...); - template - constexpr explicit optional(in_place_t, initializer_list, Args&&...); - - // 5.3.2, Destructor - ~optional(); - - // 5.3.3, Assignment - optional& operator=(nullopt_t) noexcept; - optional& operator=(const optional&); - optional& operator=(optional&&) noexcept(see below); - template optional& operator=(U&&); - template void emplace(Args&&...); - template - void emplace(initializer_list, Args&&...); - - // 5.3.4, Swap - void swap(optional&) noexcept(see below); - - // 5.3.5, Observers - constexpr T const* operator ->() const; - constexpr T* operator ->(); - constexpr T const& operator *() const &; - constexpr T& operator *() &; - constexpr T&& operator *() &&; - constexpr const T&& operator *() const &&; - constexpr explicit operator bool() const noexcept; - constexpr T const& value() const &; - constexpr T& value() &; - constexpr T&& value() &&; - constexpr const T&& value() const &&; - template constexpr T value_or(U&&) const &; - template constexpr T value_or(U&&) &&; - - private: - T* val; // exposition only - }; - - } // namespace fundamentals_v1 - } // namespace experimental - - // 5.11, Hash support - template struct hash; - template struct hash>; - -} // namespace std - -*/ - -#include -#include -#include -#if _LIBCPP_STD_VER > 11 -#include -#include -#include -#include <__functional_base> -#include <__debug> -#endif - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -#pragma GCC system_header -#endif - -_LIBCPP_PUSH_MACROS -#include <__undef_macros> - - -_LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL -class _LIBCPP_EXCEPTION_ABI _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS bad_optional_access - : public std::logic_error -{ -public: - bad_optional_access() : std::logic_error("Bad optional Access") {} - -// Get the key function ~bad_optional_access() into the dylib - virtual ~bad_optional_access() _NOEXCEPT; -}; - -_LIBCPP_END_NAMESPACE_EXPERIMENTAL - - -#if _LIBCPP_STD_VER > 11 - -_LIBCPP_BEGIN_NAMESPACE_LFTS - -struct in_place_t {}; -constexpr in_place_t in_place{}; - -struct nullopt_t -{ - explicit constexpr nullopt_t(int) noexcept {} -}; - -constexpr nullopt_t nullopt{0}; - -template ::value> -class __optional_storage -{ -protected: - typedef _Tp value_type; - union - { - char __null_state_; - value_type __val_; - }; - bool __engaged_ = false; - - _LIBCPP_INLINE_VISIBILITY - ~__optional_storage() - { - if (__engaged_) - __val_.~value_type(); - } - - _LIBCPP_INLINE_VISIBILITY - constexpr __optional_storage() noexcept - : __null_state_('\0') {} - - _LIBCPP_INLINE_VISIBILITY - __optional_storage(const __optional_storage& __x) - : __engaged_(__x.__engaged_) - { - if (__engaged_) - ::new((void*)_VSTD::addressof(__val_)) value_type(__x.__val_); - } - - _LIBCPP_INLINE_VISIBILITY - __optional_storage(__optional_storage&& __x) - noexcept(is_nothrow_move_constructible::value) - : __engaged_(__x.__engaged_) - { - if (__engaged_) - ::new((void*)_VSTD::addressof(__val_)) value_type(_VSTD::move(__x.__val_)); - } - - _LIBCPP_INLINE_VISIBILITY - constexpr __optional_storage(const value_type& __v) - : __val_(__v), - __engaged_(true) {} - - _LIBCPP_INLINE_VISIBILITY - constexpr __optional_storage(value_type&& __v) - : __val_(_VSTD::move(__v)), - __engaged_(true) {} - - template - _LIBCPP_INLINE_VISIBILITY - constexpr - explicit __optional_storage(in_place_t, _Args&&... __args) - : __val_(_VSTD::forward<_Args>(__args)...), - __engaged_(true) {} -}; - -template -class __optional_storage<_Tp, true> -{ -protected: - typedef _Tp value_type; - union - { - char __null_state_; - value_type __val_; - }; - bool __engaged_ = false; - - _LIBCPP_INLINE_VISIBILITY - constexpr __optional_storage() noexcept - : __null_state_('\0') {} - - _LIBCPP_INLINE_VISIBILITY - __optional_storage(const __optional_storage& __x) - : __engaged_(__x.__engaged_) - { - if (__engaged_) - ::new((void*)_VSTD::addressof(__val_)) value_type(__x.__val_); - } - - _LIBCPP_INLINE_VISIBILITY - __optional_storage(__optional_storage&& __x) - noexcept(is_nothrow_move_constructible::value) - : __engaged_(__x.__engaged_) - { - if (__engaged_) - ::new((void*)_VSTD::addressof(__val_)) value_type(_VSTD::move(__x.__val_)); - } - - _LIBCPP_INLINE_VISIBILITY - constexpr __optional_storage(const value_type& __v) - : __val_(__v), - __engaged_(true) {} - - _LIBCPP_INLINE_VISIBILITY - constexpr __optional_storage(value_type&& __v) - : __val_(_VSTD::move(__v)), - __engaged_(true) {} - - template - _LIBCPP_INLINE_VISIBILITY - constexpr - explicit __optional_storage(in_place_t, _Args&&... __args) - : __val_(_VSTD::forward<_Args>(__args)...), - __engaged_(true) {} -}; - -template -class optional - : private __optional_storage<_Tp> -{ - typedef __optional_storage<_Tp> __base; -public: - typedef _Tp value_type; - - static_assert(!is_reference::value, - "Instantiation of optional with a reference type is ill-formed."); - static_assert(!is_same::type, in_place_t>::value, - "Instantiation of optional with a in_place_t type is ill-formed."); - static_assert(!is_same::type, nullopt_t>::value, - "Instantiation of optional with a nullopt_t type is ill-formed."); - static_assert(is_object::value, - "Instantiation of optional with a non-object type is undefined behavior."); - static_assert(is_nothrow_destructible::value, - "Instantiation of optional with an object type that is not noexcept destructible is undefined behavior."); - - _LIBCPP_INLINE_VISIBILITY constexpr optional() noexcept {} - _LIBCPP_INLINE_VISIBILITY optional(const optional&) = default; - _LIBCPP_INLINE_VISIBILITY optional(optional&&) = default; - _LIBCPP_INLINE_VISIBILITY ~optional() = default; - _LIBCPP_INLINE_VISIBILITY constexpr optional(nullopt_t) noexcept {} - _LIBCPP_INLINE_VISIBILITY constexpr optional(const value_type& __v) - : __base(__v) {} - _LIBCPP_INLINE_VISIBILITY constexpr optional(value_type&& __v) - : __base(_VSTD::move(__v)) {} - - template ::value - >::type - > - _LIBCPP_INLINE_VISIBILITY - constexpr - explicit optional(in_place_t, _Args&&... __args) - : __base(in_place, _VSTD::forward<_Args>(__args)...) {} - - template &, _Args...>::value - >::type - > - _LIBCPP_INLINE_VISIBILITY - constexpr - explicit optional(in_place_t, initializer_list<_Up> __il, _Args&&... __args) - : __base(in_place, __il, _VSTD::forward<_Args>(__args)...) {} - - _LIBCPP_INLINE_VISIBILITY - optional& operator=(nullopt_t) noexcept - { - if (this->__engaged_) - { - this->__val_.~value_type(); - this->__engaged_ = false; - } - return *this; - } - - _LIBCPP_INLINE_VISIBILITY - optional& - operator=(const optional& __opt) - { - if (this->__engaged_ == __opt.__engaged_) - { - if (this->__engaged_) - this->__val_ = __opt.__val_; - } - else - { - if (this->__engaged_) - this->__val_.~value_type(); - else - ::new((void*)_VSTD::addressof(this->__val_)) value_type(__opt.__val_); - this->__engaged_ = __opt.__engaged_; - } - return *this; - } - - _LIBCPP_INLINE_VISIBILITY - optional& - operator=(optional&& __opt) - noexcept(is_nothrow_move_assignable::value && - is_nothrow_move_constructible::value) - { - if (this->__engaged_ == __opt.__engaged_) - { - if (this->__engaged_) - this->__val_ = _VSTD::move(__opt.__val_); - } - else - { - if (this->__engaged_) - this->__val_.~value_type(); - else - ::new((void*)_VSTD::addressof(this->__val_)) - value_type(_VSTD::move(__opt.__val_)); - this->__engaged_ = __opt.__engaged_; - } - return *this; - } - - template ::type, value_type>::value && - is_constructible::value && - is_assignable::value - >::type - > - _LIBCPP_INLINE_VISIBILITY - optional& - operator=(_Up&& __v) - { - if (this->__engaged_) - this->__val_ = _VSTD::forward<_Up>(__v); - else - { - ::new((void*)_VSTD::addressof(this->__val_)) value_type(_VSTD::forward<_Up>(__v)); - this->__engaged_ = true; - } - return *this; - } - - template ::value - >::type - > - _LIBCPP_INLINE_VISIBILITY - void - emplace(_Args&&... __args) - { - *this = nullopt; - ::new((void*)_VSTD::addressof(this->__val_)) - value_type(_VSTD::forward<_Args>(__args)...); - this->__engaged_ = true; - } - - template &, _Args...>::value - >::type - > - _LIBCPP_INLINE_VISIBILITY - void - emplace(initializer_list<_Up> __il, _Args&&... __args) - { - *this = nullopt; - ::new((void*)_VSTD::addressof(this->__val_)) - value_type(__il, _VSTD::forward<_Args>(__args)...); - this->__engaged_ = true; - } - - _LIBCPP_INLINE_VISIBILITY - void - swap(optional& __opt) - noexcept(is_nothrow_move_constructible::value && - __is_nothrow_swappable::value) - { - using _VSTD::swap; - if (this->__engaged_ == __opt.__engaged_) - { - if (this->__engaged_) - swap(this->__val_, __opt.__val_); - } - else - { - if (this->__engaged_) - { - ::new((void*)_VSTD::addressof(__opt.__val_)) - value_type(_VSTD::move(this->__val_)); - this->__val_.~value_type(); - } - else - { - ::new((void*)_VSTD::addressof(this->__val_)) - value_type(_VSTD::move(__opt.__val_)); - __opt.__val_.~value_type(); - } - swap(this->__engaged_, __opt.__engaged_); - } - } - - _LIBCPP_INLINE_VISIBILITY - constexpr - value_type const* - operator->() const - { - _LIBCPP_ASSERT(this->__engaged_, "optional operator-> called for disengaged value"); -#ifndef _LIBCPP_HAS_NO_BUILTIN_ADDRESSOF - return __builtin_addressof(this->__val_); -#else - return __operator_arrow(__has_operator_addressof{}); -#endif - } - - _LIBCPP_INLINE_VISIBILITY - value_type* - operator->() - { - _LIBCPP_ASSERT(this->__engaged_, "optional operator-> called for disengaged value"); - return _VSTD::addressof(this->__val_); - } - - _LIBCPP_INLINE_VISIBILITY - constexpr - const value_type& - operator*() const - { - _LIBCPP_ASSERT(this->__engaged_, "optional operator* called for disengaged value"); - return this->__val_; - } - - _LIBCPP_INLINE_VISIBILITY - value_type& - operator*() - { - _LIBCPP_ASSERT(this->__engaged_, "optional operator* called for disengaged value"); - return this->__val_; - } - - _LIBCPP_INLINE_VISIBILITY - constexpr explicit operator bool() const noexcept {return this->__engaged_;} - - _LIBCPP_NORETURN _LIBCPP_INLINE_VISIBILITY -#ifndef _LIBCPP_NO_EXCEPTIONS -_LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS -#endif - constexpr void __throw_bad_optional_access() const - { -#ifndef _LIBCPP_NO_EXCEPTIONS - throw bad_optional_access(); -#else - _VSTD::abort(); -#endif - } - - _LIBCPP_INLINE_VISIBILITY _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS - constexpr value_type const& value() const - { - if (!this->__engaged_) - __throw_bad_optional_access(); - return this->__val_; - } - - _LIBCPP_INLINE_VISIBILITY _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS - value_type& value() - { - if (!this->__engaged_) - __throw_bad_optional_access(); - return this->__val_; - } - - template - _LIBCPP_INLINE_VISIBILITY - constexpr value_type value_or(_Up&& __v) const& - { - static_assert(is_copy_constructible::value, - "optional::value_or: T must be copy constructible"); - static_assert(is_convertible<_Up, value_type>::value, - "optional::value_or: U must be convertible to T"); - return this->__engaged_ ? this->__val_ : - static_cast(_VSTD::forward<_Up>(__v)); - } - - template - _LIBCPP_INLINE_VISIBILITY - value_type value_or(_Up&& __v) && - { - static_assert(is_move_constructible::value, - "optional::value_or: T must be move constructible"); - static_assert(is_convertible<_Up, value_type>::value, - "optional::value_or: U must be convertible to T"); - return this->__engaged_ ? _VSTD::move(this->__val_) : - static_cast(_VSTD::forward<_Up>(__v)); - } - -private: - _LIBCPP_INLINE_VISIBILITY - value_type const* - __operator_arrow(true_type) const - { - return _VSTD::addressof(this->__val_); - } - - _LIBCPP_INLINE_VISIBILITY - constexpr - value_type const* - __operator_arrow(false_type) const - { - return &this->__val_; - } -}; - -// Comparisons between optionals -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator==(const optional<_Tp>& __x, const optional<_Tp>& __y) -{ - if (static_cast(__x) != static_cast(__y)) - return false; - if (!static_cast(__x)) - return true; - return *__x == *__y; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator!=(const optional<_Tp>& __x, const optional<_Tp>& __y) -{ - return !(__x == __y); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator<(const optional<_Tp>& __x, const optional<_Tp>& __y) -{ - if (!static_cast(__y)) - return false; - if (!static_cast(__x)) - return true; - return *__x < *__y; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator>(const optional<_Tp>& __x, const optional<_Tp>& __y) -{ - return __y < __x; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator<=(const optional<_Tp>& __x, const optional<_Tp>& __y) -{ - return !(__y < __x); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator>=(const optional<_Tp>& __x, const optional<_Tp>& __y) -{ - return !(__x < __y); -} - - -// Comparisons with nullopt -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator==(const optional<_Tp>& __x, nullopt_t) noexcept -{ - return !static_cast(__x); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator==(nullopt_t, const optional<_Tp>& __x) noexcept -{ - return !static_cast(__x); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator!=(const optional<_Tp>& __x, nullopt_t) noexcept -{ - return static_cast(__x); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator!=(nullopt_t, const optional<_Tp>& __x) noexcept -{ - return static_cast(__x); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator<(const optional<_Tp>&, nullopt_t) noexcept -{ - return false; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator<(nullopt_t, const optional<_Tp>& __x) noexcept -{ - return static_cast(__x); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator<=(const optional<_Tp>& __x, nullopt_t) noexcept -{ - return !static_cast(__x); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator<=(nullopt_t, const optional<_Tp>&) noexcept -{ - return true; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator>(const optional<_Tp>& __x, nullopt_t) noexcept -{ - return static_cast(__x); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator>(nullopt_t, const optional<_Tp>&) noexcept -{ - return false; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator>=(const optional<_Tp>&, nullopt_t) noexcept -{ - return true; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator>=(nullopt_t, const optional<_Tp>& __x) noexcept -{ - return !static_cast(__x); -} - -// Comparisons with T -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator==(const optional<_Tp>& __x, const _Tp& __v) -{ - return static_cast(__x) ? *__x == __v : false; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator==(const _Tp& __v, const optional<_Tp>& __x) -{ - return static_cast(__x) ? *__x == __v : false; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator!=(const optional<_Tp>& __x, const _Tp& __v) -{ - return static_cast(__x) ? !(*__x == __v) : true; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator!=(const _Tp& __v, const optional<_Tp>& __x) -{ - return static_cast(__x) ? !(*__x == __v) : true; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator<(const optional<_Tp>& __x, const _Tp& __v) -{ - return static_cast(__x) ? less<_Tp>{}(*__x, __v) : true; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator<(const _Tp& __v, const optional<_Tp>& __x) -{ - return static_cast(__x) ? less<_Tp>{}(__v, *__x) : false; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator<=(const optional<_Tp>& __x, const _Tp& __v) -{ - return !(__x > __v); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator<=(const _Tp& __v, const optional<_Tp>& __x) -{ - return !(__v > __x); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator>(const optional<_Tp>& __x, const _Tp& __v) -{ - return static_cast(__x) ? __v < __x : false; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator>(const _Tp& __v, const optional<_Tp>& __x) -{ - return static_cast(__x) ? __x < __v : true; -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator>=(const optional<_Tp>& __x, const _Tp& __v) -{ - return !(__x < __v); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -bool -operator>=(const _Tp& __v, const optional<_Tp>& __x) -{ - return !(__v < __x); -} - - -template -inline _LIBCPP_INLINE_VISIBILITY -void -swap(optional<_Tp>& __x, optional<_Tp>& __y) noexcept(noexcept(__x.swap(__y))) -{ - __x.swap(__y); -} - -template -inline _LIBCPP_INLINE_VISIBILITY -constexpr -optional::type> -make_optional(_Tp&& __v) -{ - return optional::type>(_VSTD::forward<_Tp>(__v)); -} - -_LIBCPP_END_NAMESPACE_LFTS - -_LIBCPP_BEGIN_NAMESPACE_STD - -template -struct _LIBCPP_TEMPLATE_VIS hash > -{ - typedef std::experimental::optional<_Tp> argument_type; - typedef size_t result_type; - - _LIBCPP_INLINE_VISIBILITY - result_type operator()(const argument_type& __opt) const _NOEXCEPT - { - return static_cast(__opt) ? hash<_Tp>()(*__opt) : 0; - } -}; - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP_STD_VER > 11 - -_LIBCPP_POP_MACROS - -#endif // _LIBCPP_EXPERIMENTAL_OPTIONAL +#error " has been removed. Use instead." diff --git a/include/module.modulemap b/include/module.modulemap index 3194b5c9f..de1d507bf 100644 --- a/include/module.modulemap +++ b/include/module.modulemap @@ -546,10 +546,6 @@ module std [system] { header "experimental/numeric" export * } - module optional { - header "experimental/optional" - export * - } module propagate_const { header "experimental/propagate_const" export * diff --git a/src/optional.cpp b/src/optional.cpp index 2877d175b..6444987bf 100644 --- a/src/optional.cpp +++ b/src/optional.cpp @@ -8,7 +8,6 @@ //===----------------------------------------------------------------------===// #include "optional" -#include "experimental/optional" namespace std { @@ -21,8 +20,3 @@ const char* bad_optional_access::what() const _NOEXCEPT { } // std -_LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL - -bad_optional_access::~bad_optional_access() _NOEXCEPT = default; - -_LIBCPP_END_NAMESPACE_EXPERIMENTAL diff --git a/test/libcxx/double_include.sh.cpp b/test/libcxx/double_include.sh.cpp index 0a9e9fcfa..fe728f778 100644 --- a/test/libcxx/double_include.sh.cpp +++ b/test/libcxx/double_include.sh.cpp @@ -150,7 +150,6 @@ #include #include #include -#include #include #include #include diff --git a/test/libcxx/experimental/optional/version.pass.cpp b/test/libcxx/experimental/optional/version.pass.cpp deleted file mode 100644 index 585b7a24e..000000000 --- a/test/libcxx/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. -// -//===----------------------------------------------------------------------===// - -// - -#include - -#ifndef _LIBCPP_VERSION -#error _LIBCPP_VERSION not defined -#endif - -int main() -{ -} diff --git a/test/libcxx/min_max_macros.sh.cpp b/test/libcxx/min_max_macros.sh.cpp index bae4175b1..978ff9080 100644 --- a/test/libcxx/min_max_macros.sh.cpp +++ b/test/libcxx/min_max_macros.sh.cpp @@ -261,8 +261,6 @@ TEST_MACROS(); TEST_MACROS(); #include TEST_MACROS(); -#include -TEST_MACROS(); #include TEST_MACROS(); #include diff --git a/test/std/experimental/optional/optional.bad_optional_access/default.pass.cpp b/test/std/experimental/optional/optional.bad_optional_access/default.pass.cpp deleted file mode 100644 index f26914982..000000000 --- a/test/std/experimental/optional/optional.bad_optional_access/default.pass.cpp +++ /dev/null @@ -1,29 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// XFAIL: availability=macosx10.12 -// XFAIL: availability=macosx10.11 -// XFAIL: availability=macosx10.10 -// XFAIL: availability=macosx10.9 -// XFAIL: availability=macosx10.8 -// XFAIL: availability=macosx10.7 - -// - -// class bad_optional_access is default constructible - -#include -#include - -int main() -{ - using std::experimental::bad_optional_access; - bad_optional_access ex; -} diff --git a/test/std/experimental/optional/optional.bad_optional_access/derive.pass.cpp b/test/std/experimental/optional/optional.bad_optional_access/derive.pass.cpp deleted file mode 100644 index a4af713a3..000000000 --- a/test/std/experimental/optional/optional.bad_optional_access/derive.pass.cpp +++ /dev/null @@ -1,31 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// XFAIL: availability_markup=macosx10.12 -// XFAIL: availability_markup=macosx10.11 -// XFAIL: availability_markup=macosx10.10 -// XFAIL: availability_markup=macosx10.9 -// XFAIL: availability_markup=macosx10.8 -// XFAIL: availability_markup=macosx10.7 - -// - -// class bad_optional_access : public logic_error - -#include -#include - -int main() -{ - using std::experimental::bad_optional_access; - - static_assert(std::is_base_of::value, ""); - static_assert(std::is_convertible::value, ""); -} diff --git a/test/std/experimental/optional/optional.comp_with_t/equal.pass.cpp b/test/std/experimental/optional/optional.comp_with_t/equal.pass.cpp deleted file mode 100644 index 749fa7dcf..000000000 --- a/test/std/experimental/optional/optional.comp_with_t/equal.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. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// template constexpr bool operator==(const optional& x, const T& v); -// template constexpr bool operator==(const T& v, const optional& x); - -#include - -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_ ; } - -int main() -{ - { - typedef X T; - typedef optional 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), "" ); - } -} diff --git a/test/std/experimental/optional/optional.comp_with_t/greater.pass.cpp b/test/std/experimental/optional/optional.comp_with_t/greater.pass.cpp deleted file mode 100644 index c4d95a1c8..000000000 --- a/test/std/experimental/optional/optional.comp_with_t/greater.pass.cpp +++ /dev/null @@ -1,55 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// template constexpr bool operator>(const optional& x, const T& v); -// template constexpr bool operator>(const T& v, const optional& x); - -#include - -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_ ; } - -int main() -{ - { - typedef X T; - typedef optional 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), "" ); - } -} diff --git a/test/std/experimental/optional/optional.comp_with_t/greater_equal.pass.cpp b/test/std/experimental/optional/optional.comp_with_t/greater_equal.pass.cpp deleted file mode 100644 index ce1cd9f98..000000000 --- a/test/std/experimental/optional/optional.comp_with_t/greater_equal.pass.cpp +++ /dev/null @@ -1,55 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// template constexpr bool operator>=(const optional& x, const T& v); -// template constexpr bool operator>=(const T& v, const optional& x); - -#include - -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_ ; } - -int main() -{ - { - typedef X T; - typedef optional 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), "" ); - } -} diff --git a/test/std/experimental/optional/optional.comp_with_t/less_equal.pass.cpp b/test/std/experimental/optional/optional.comp_with_t/less_equal.pass.cpp deleted file mode 100644 index c519bde1e..000000000 --- a/test/std/experimental/optional/optional.comp_with_t/less_equal.pass.cpp +++ /dev/null @@ -1,55 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// template constexpr bool operator<=(const optional& x, const T& v); -// template constexpr bool operator<=(const T& v, const optional& x); - -#include - -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_ ; } - -int main() -{ - { - typedef X T; - typedef optional 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), "" ); - } -} diff --git a/test/std/experimental/optional/optional.comp_with_t/less_than.pass.cpp b/test/std/experimental/optional/optional.comp_with_t/less_than.pass.cpp deleted file mode 100644 index ee1e98f2b..000000000 --- a/test/std/experimental/optional/optional.comp_with_t/less_than.pass.cpp +++ /dev/null @@ -1,55 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// template constexpr bool operator<(const optional& x, const T& v); -// template constexpr bool operator<(const T& v, const optional& x); - -#include - -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_ ; } - -int main() -{ - { - typedef X T; - typedef optional 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), "" ); - } -} diff --git a/test/std/experimental/optional/optional.comp_with_t/not_equal.pass.cpp b/test/std/experimental/optional/optional.comp_with_t/not_equal.pass.cpp deleted file mode 100644 index a3daa02d5..000000000 --- a/test/std/experimental/optional/optional.comp_with_t/not_equal.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. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// template constexpr bool operator!=(const optional& x, const T& v); -// template constexpr bool operator!=(const T& v, const optional& x); - -#include - -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_ ; } - -int main() -{ - { - typedef X T; - typedef optional 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), "" ); - } -} diff --git a/test/std/experimental/optional/optional.defs/tested_elsewhere.pass.cpp b/test/std/experimental/optional/optional.defs/tested_elsewhere.pass.cpp deleted file mode 100644 index b58f5c55b..000000000 --- a/test/std/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/test/std/experimental/optional/optional.general/nothing_to_do.pass.cpp b/test/std/experimental/optional/optional.general/nothing_to_do.pass.cpp deleted file mode 100644 index b58f5c55b..000000000 --- a/test/std/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/test/std/experimental/optional/optional.hash/hash.pass.cpp b/test/std/experimental/optional/optional.hash/hash.pass.cpp deleted file mode 100644 index 21126740b..000000000 --- a/test/std/experimental/optional/optional.hash/hash.pass.cpp +++ /dev/null @@ -1,46 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// template struct hash>; - -#include -#include -#include -#include - - -int main() -{ - using std::experimental::optional; - - { - typedef int T; - optional opt; - assert(std::hash>{}(opt) == 0); - opt = 2; - assert(std::hash>{}(opt) == std::hash{}(*opt)); - } - { - typedef std::string T; - optional opt; - assert(std::hash>{}(opt) == 0); - opt = std::string("123"); - assert(std::hash>{}(opt) == std::hash{}(*opt)); - } - { - typedef std::unique_ptr T; - optional opt; - assert(std::hash>{}(opt) == 0); - opt = std::unique_ptr(new int(3)); - assert(std::hash>{}(opt) == std::hash{}(*opt)); - } -} diff --git a/test/std/experimental/optional/optional.inplace/in_place_t.pass.cpp b/test/std/experimental/optional/optional.inplace/in_place_t.pass.cpp deleted file mode 100644 index b63977bb6..000000000 --- a/test/std/experimental/optional/optional.inplace/in_place_t.pass.cpp +++ /dev/null @@ -1,36 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// struct in_place_t{}; -// constexpr in_place_t in_place{}; - -#include -#include - -using std::experimental::optional; -using std::experimental::in_place_t; -using std::experimental::in_place; - -constexpr -int -test(const in_place_t&) -{ - return 3; -} - -int main() -{ - static_assert((std::is_class::value), ""); - static_assert((std::is_empty::value), ""); - - static_assert(test(in_place) == 3, ""); -} diff --git a/test/std/experimental/optional/optional.nullops/equal.pass.cpp b/test/std/experimental/optional/optional.nullops/equal.pass.cpp deleted file mode 100644 index 79a5a7e06..000000000 --- a/test/std/experimental/optional/optional.nullops/equal.pass.cpp +++ /dev/null @@ -1,39 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// template constexpr bool operator==(const optional& x, nullopt_t) noexcept; -// template constexpr bool operator==(nullopt_t, const optional& x) noexcept; - -#include - -int main() -{ - using std::experimental::optional; - using std::experimental::nullopt_t; - using std::experimental::nullopt; - - { - typedef int T; - typedef optional 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), ""); - } -} diff --git a/test/std/experimental/optional/optional.nullops/greater.pass.cpp b/test/std/experimental/optional/optional.nullops/greater.pass.cpp deleted file mode 100644 index 15b22005b..000000000 --- a/test/std/experimental/optional/optional.nullops/greater.pass.cpp +++ /dev/null @@ -1,39 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// template constexpr bool operator>(const optional& x, nullopt_t) noexcept; -// template constexpr bool operator>(nullopt_t, const optional& x) noexcept; - -#include - -int main() -{ - using std::experimental::optional; - using std::experimental::nullopt_t; - using std::experimental::nullopt; - - { - typedef int T; - typedef optional 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), ""); - } -} diff --git a/test/std/experimental/optional/optional.nullops/greater_equal.pass.cpp b/test/std/experimental/optional/optional.nullops/greater_equal.pass.cpp deleted file mode 100644 index 313770ff4..000000000 --- a/test/std/experimental/optional/optional.nullops/greater_equal.pass.cpp +++ /dev/null @@ -1,39 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// template constexpr bool operator>=(const optional& x, nullopt_t) noexcept; -// template constexpr bool operator>=(nullopt_t, const optional& x) noexcept; - -#include - -int main() -{ - using std::experimental::optional; - using std::experimental::nullopt_t; - using std::experimental::nullopt; - - { - typedef int T; - typedef optional 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), ""); - } -} diff --git a/test/std/experimental/optional/optional.nullops/less_equal.pass.cpp b/test/std/experimental/optional/optional.nullops/less_equal.pass.cpp deleted file mode 100644 index ac7be156c..000000000 --- a/test/std/experimental/optional/optional.nullops/less_equal.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. -// -//===----------------------------------------------------------------------===// - - -// - -// template constexpr bool operator<=(const optional& x, nullopt_t) noexcept; -// template constexpr bool operator<=(nullopt_t, const optional& x) noexcept; - -#include - -#include "test_macros.h" - -int main() -{ -#if TEST_STD_VER > 11 - using std::experimental::optional; - using std::experimental::nullopt_t; - using std::experimental::nullopt; - - { - typedef int T; - typedef optional 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/test/std/experimental/optional/optional.nullops/less_than.pass.cpp b/test/std/experimental/optional/optional.nullops/less_than.pass.cpp deleted file mode 100644 index fdb400700..000000000 --- a/test/std/experimental/optional/optional.nullops/less_than.pass.cpp +++ /dev/null @@ -1,39 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// template constexpr bool operator<(const optional& x, nullopt_t) noexcept; -// template constexpr bool operator<(nullopt_t, const optional& x) noexcept; - -#include - -int main() -{ - using std::experimental::optional; - using std::experimental::nullopt_t; - using std::experimental::nullopt; - - { - typedef int T; - typedef optional 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), ""); - } -} diff --git a/test/std/experimental/optional/optional.nullops/not_equal.pass.cpp b/test/std/experimental/optional/optional.nullops/not_equal.pass.cpp deleted file mode 100644 index 70ae0f1d8..000000000 --- a/test/std/experimental/optional/optional.nullops/not_equal.pass.cpp +++ /dev/null @@ -1,39 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// template constexpr bool operator!=(const optional& x, nullopt_t) noexcept; -// template constexpr bool operator!=(nullopt_t, const optional& x) noexcept; - -#include - -int main() -{ - using std::experimental::optional; - using std::experimental::nullopt_t; - using std::experimental::nullopt; - - { - typedef int T; - typedef optional 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), ""); - } -} diff --git a/test/std/experimental/optional/optional.nullopt/nullopt_t.pass.cpp b/test/std/experimental/optional/optional.nullopt/nullopt_t.pass.cpp deleted file mode 100644 index 8ad49c748..000000000 --- a/test/std/experimental/optional/optional.nullopt/nullopt_t.pass.cpp +++ /dev/null @@ -1,38 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// struct nullopt_t{see below}; -// constexpr nullopt_t nullopt(unspecified); - -#include -#include - -using std::experimental::optional; -using std::experimental::nullopt_t; -using std::experimental::nullopt; - -constexpr -int -test(const nullopt_t&) -{ - return 3; -} - -int main() -{ - static_assert((std::is_class::value), ""); - static_assert((std::is_empty::value), ""); - static_assert((std::is_literal_type::value), ""); - static_assert((!std::is_default_constructible::value), ""); - - static_assert(test(nullopt) == 3, ""); -} diff --git a/test/std/experimental/optional/optional.object/optional.object.assign/assign_value.pass.cpp b/test/std/experimental/optional/optional.object/optional.object.assign/assign_value.pass.cpp deleted file mode 100644 index 0215417ce..000000000 --- a/test/std/experimental/optional/optional.object/optional.object.assign/assign_value.pass.cpp +++ /dev/null @@ -1,80 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// template optional& operator=(U&& v); - -#include -#include -#include -#include - -using std::experimental::optional; - -struct AllowConstAssign { - AllowConstAssign() {} - AllowConstAssign(AllowConstAssign const&) {} - AllowConstAssign const& operator=(AllowConstAssign const&) const { - return *this; - } -}; - -struct X -{ -}; - -int main() -{ - static_assert(std::is_assignable, int>::value, ""); - static_assert(std::is_assignable, int&>::value, ""); - static_assert(std::is_assignable&, int>::value, ""); - static_assert(std::is_assignable&, int&>::value, ""); - static_assert(std::is_assignable&, const int&>::value, ""); - static_assert(!std::is_assignable&, const int&>::value, ""); - static_assert(!std::is_assignable, X>::value, ""); - { - optional opt; - opt = 1; - assert(static_cast(opt) == true); - assert(*opt == 1); - } - { - optional opt; - const int i = 2; - opt = i; - assert(static_cast(opt) == true); - assert(*opt == i); - } - { - optional opt(3); - const int i = 2; - opt = i; - assert(static_cast(opt) == true); - assert(*opt == i); - } - { - optional opt; - const AllowConstAssign other; - opt = other; - } - { - optional> opt; - opt = std::unique_ptr(new int(3)); - assert(static_cast(opt) == true); - assert(**opt == 3); - } - { - optional> opt(std::unique_ptr(new int(2))); - opt = std::unique_ptr(new int(3)); - assert(static_cast(opt) == true); - assert(**opt == 3); - } -} diff --git a/test/std/experimental/optional/optional.object/optional.object.assign/copy.pass.cpp b/test/std/experimental/optional/optional.object/optional.object.assign/copy.pass.cpp deleted file mode 100644 index 17ee97545..000000000 --- a/test/std/experimental/optional/optional.object/optional.object.assign/copy.pass.cpp +++ /dev/null @@ -1,101 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// optional& operator=(const optional& rhs); - -#include -#include -#include - -#include "test_macros.h" - -using std::experimental::optional; - -struct AllowConstAssign { - AllowConstAssign(AllowConstAssign const&) {} - AllowConstAssign const& operator=(AllowConstAssign const&) const { - return *this; - } -}; - -struct X -{ - static bool throw_now; - - X() = default; - X(const X&) - { - if (throw_now) - TEST_THROW(6); - } -}; - -bool X::throw_now = false; - -int main() -{ - { - optional opt; - constexpr optional opt2; - opt = opt2; - static_assert(static_cast(opt2) == false, ""); - assert(static_cast(opt) == static_cast(opt2)); - } - { - optional opt; - optional opt2; - opt = opt2; - } - { - optional opt; - constexpr optional opt2(2); - opt = opt2; - static_assert(static_cast(opt2) == true, ""); - static_assert(*opt2 == 2, ""); - assert(static_cast(opt) == static_cast(opt2)); - assert(*opt == *opt2); - } - { - optional opt(3); - constexpr optional opt2; - opt = opt2; - static_assert(static_cast(opt2) == false, ""); - assert(static_cast(opt) == static_cast(opt2)); - } - { - optional opt(3); - constexpr optional opt2(2); - opt = opt2; - static_assert(static_cast(opt2) == true, ""); - static_assert(*opt2 == 2, ""); - assert(static_cast(opt) == static_cast(opt2)); - assert(*opt == *opt2); - } -#ifndef TEST_HAS_NO_EXCEPTIONS - { - optional opt; - optional opt2(X{}); - assert(static_cast(opt2) == true); - try - { - X::throw_now = true; - opt = opt2; - assert(false); - } - catch (int i) - { - assert(i == 6); - assert(static_cast(opt) == false); - } - } -#endif -} diff --git a/test/std/experimental/optional/optional.object/optional.object.assign/emplace.pass.cpp b/test/std/experimental/optional/optional.object/optional.object.assign/emplace.pass.cpp deleted file mode 100644 index 256396094..000000000 --- a/test/std/experimental/optional/optional.object/optional.object.assign/emplace.pass.cpp +++ /dev/null @@ -1,153 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// template void optional::emplace(Args&&... args); - -#include -#include -#include -#include - -#include "test_macros.h" - -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) {TEST_THROW(6);} - ~Z() {dtor_called = true;} -}; - -bool Z::dtor_called = false; - -int main() -{ - { - optional opt; - opt.emplace(); - assert(static_cast(opt) == true); - assert(*opt == 0); - } - { - optional opt; - opt.emplace(1); - assert(static_cast(opt) == true); - assert(*opt == 1); - } - { - optional opt(2); - opt.emplace(); - assert(static_cast(opt) == true); - assert(*opt == 0); - } - { - optional opt(2); - opt.emplace(1); - assert(static_cast(opt) == true); - assert(*opt == 1); - } - { - optional opt(2); - opt.emplace(1); - assert(static_cast(opt) == true); - assert(*opt == 1); - } - { - optional opt; - opt.emplace(); - assert(static_cast(opt) == true); - assert(*opt == X()); - } - { - optional opt; - opt.emplace(1); - assert(static_cast(opt) == true); - assert(*opt == X(1)); - } - { - optional opt; - opt.emplace(1, 2); - assert(static_cast(opt) == true); - assert(*opt == X(1, 2)); - } - { - optional opt(X{3}); - opt.emplace(); - assert(static_cast(opt) == true); - assert(*opt == X()); - } - { - optional opt(X{3}); - opt.emplace(1); - assert(static_cast(opt) == true); - assert(*opt == X(1)); - } - { - optional opt(X{3}); - opt.emplace(1, 2); - assert(static_cast(opt) == true); - assert(*opt == X(1, 2)); - } - { - Y y; - { - optional opt(y); - assert(Y::dtor_called == false); - opt.emplace(); - assert(Y::dtor_called == true); - } - } -#ifndef TEST_HAS_NO_EXCEPTIONS - { - Z z; - optional opt(z); - try - { - assert(static_cast(opt) == true); - assert(Z::dtor_called == false); - opt.emplace(1); - } - catch (int i) - { - assert(i == 6); - assert(static_cast(opt) == false); - assert(Z::dtor_called == true); - } - } -#endif -} diff --git a/test/std/experimental/optional/optional.object/optional.object.assign/emplace_initializer_list.pass.cpp b/test/std/experimental/optional/optional.object/optional.object.assign/emplace_initializer_list.pass.cpp deleted file mode 100644 index 8a265808a..000000000 --- a/test/std/experimental/optional/optional.object/optional.object.assign/emplace_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. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// template -// void optional::emplace(initializer_list il, Args&&... args); - -#include -#include -#include -#include - -#include "test_macros.h" - -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 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 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) {} - Z(std::initializer_list il) : i_(il.begin()[0]), j_(il.begin()[1]) - {TEST_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; - -int main() -{ - { - X x; - { - optional opt(x); - assert(X::dtor_called == false); - opt.emplace({1, 2}); - assert(X::dtor_called == true); - assert(*opt == X({1, 2})); - } - } - X::dtor_called = false; - { - X x; - { - optional opt(x); - assert(X::dtor_called == false); - opt.emplace({1, 2}); - assert(X::dtor_called == true); - assert(*opt == X({1, 2})); - } - } - { - optional> opt; - opt.emplace({1, 2, 3}, std::allocator()); - assert(static_cast(opt) == true); - assert(*opt == std::vector({1, 2, 3})); - } - { - optional opt; - opt.emplace({1, 2}); - assert(static_cast(opt) == true); - assert(*opt == Y({1, 2})); - } -#ifndef TEST_HAS_NO_EXCEPTIONS - { - Z z; - optional opt(z); - try - { - assert(static_cast(opt) == true); - assert(Z::dtor_called == false); - opt.emplace({1, 2}); - } - catch (int i) - { - assert(i == 6); - assert(static_cast(opt) == false); - assert(Z::dtor_called == true); - } - } -#endif -} diff --git a/test/std/experimental/optional/optional.object/optional.object.assign/move.pass.cpp b/test/std/experimental/optional/optional.object/optional.object.assign/move.pass.cpp deleted file mode 100644 index 4e2aca978..000000000 --- a/test/std/experimental/optional/optional.object/optional.object.assign/move.pass.cpp +++ /dev/null @@ -1,114 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// optional& operator=(optional&& rhs) -// noexcept(is_nothrow_move_assignable::value && -// is_nothrow_move_constructible::value); - -#include -#include -#include - -#include "test_macros.h" - -using std::experimental::optional; - -struct AllowConstAssign { - AllowConstAssign(AllowConstAssign const&) {} - AllowConstAssign const& operator=(AllowConstAssign const&) const { - return *this; - } -}; - -struct X -{ - static bool throw_now; - - X() = default; - X(X&&) - { - if (throw_now) - TEST_THROW(6); - } - X& operator=(X&&) noexcept - { - return *this; - } -}; - -bool X::throw_now = false; - -struct Y {}; - -int main() -{ - { - static_assert(std::is_nothrow_move_assignable>::value, ""); - optional opt; - constexpr optional opt2; - opt = std::move(opt2); - static_assert(static_cast(opt2) == false, ""); - assert(static_cast(opt) == static_cast(opt2)); - } - { - optional opt; - constexpr optional opt2(2); - opt = std::move(opt2); - static_assert(static_cast(opt2) == true, ""); - static_assert(*opt2 == 2, ""); - assert(static_cast(opt) == static_cast(opt2)); - assert(*opt == *opt2); - } - { - optional opt(3); - constexpr optional opt2; - opt = std::move(opt2); - static_assert(static_cast(opt2) == false, ""); - assert(static_cast(opt) == static_cast(opt2)); - } - { - optional opt(3); - constexpr optional opt2(2); - opt = std::move(opt2); - static_assert(static_cast(opt2) == true, ""); - static_assert(*opt2 == 2, ""); - assert(static_cast(opt) == static_cast(opt2)); - assert(*opt == *opt2); - } - { - optional opt; - optional opt2; - opt = std::move(opt2); - } -#ifndef TEST_HAS_NO_EXCEPTIONS - { - static_assert(!std::is_nothrow_move_assignable>::value, ""); - optional opt; - optional opt2(X{}); - assert(static_cast(opt2) == true); - try - { - X::throw_now = true; - opt = std::move(opt2); - assert(false); - } - catch (int i) - { - assert(i == 6); - assert(static_cast(opt) == false); - } - } -#endif - { - static_assert(std::is_nothrow_move_assignable>::value, ""); - } -} diff --git a/test/std/experimental/optional/optional.object/optional.object.assign/nullopt_t.pass.cpp b/test/std/experimental/optional/optional.object/optional.object.assign/nullopt_t.pass.cpp deleted file mode 100644 index b1d851b32..000000000 --- a/test/std/experimental/optional/optional.object/optional.object.assign/nullopt_t.pass.cpp +++ /dev/null @@ -1,62 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// optional& operator=(nullopt_t) noexcept; - -#include -#include -#include - -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; - -int main() -{ - { - optional opt; - static_assert(noexcept(opt = nullopt) == true, ""); - opt = nullopt; - assert(static_cast(opt) == false); - } - { - optional opt(3); - opt = nullopt; - assert(static_cast(opt) == false); - } - { - optional opt; - static_assert(noexcept(opt = nullopt) == true, ""); - assert(X::dtor_called == false); - opt = nullopt; - assert(X::dtor_called == false); - assert(static_cast(opt) == false); - } - { - X x; - { - optional opt(x); - assert(X::dtor_called == false); - opt = nullopt; - assert(X::dtor_called == true); - assert(static_cast(opt) == false); - } - } -} diff --git a/test/std/experimental/optional/optional.object/optional.object.ctor/const_T.pass.cpp b/test/std/experimental/optional/optional.object/optional.object.ctor/const_T.pass.cpp deleted file mode 100644 index 6371dcb4e..000000000 --- a/test/std/experimental/optional/optional.object/optional.object.ctor/const_T.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. -// -//===----------------------------------------------------------------------===// -// -// UNSUPPORTED: c++98, c++03, c++11 - -// - -// constexpr optional(const T& v); - -#include -#include -#include - -#include "test_macros.h" - -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 -{ -public: - Z(int) {} - Z(const Z&) {TEST_THROW(6);} -}; - - -int main() -{ - { - typedef int T; - constexpr T t(5); - constexpr optional opt(t); - static_assert(static_cast(opt) == true, ""); - static_assert(*opt == 5, ""); - - struct test_constexpr_ctor - : public optional - { - constexpr test_constexpr_ctor(const T&) {} - }; - - } - { - typedef double T; - constexpr T t(3); - constexpr optional opt(t); - static_assert(static_cast(opt) == true, ""); - static_assert(*opt == 3, ""); - - struct test_constexpr_ctor - : public optional - { - constexpr test_constexpr_ctor(const T&) {} - }; - - } - { - typedef X T; - const T t(3); - optional opt(t); - assert(static_cast(opt) == true); - assert(*opt == 3); - } - { - typedef Y T; - constexpr T t(3); - constexpr optional opt(t); - static_assert(static_cast(opt) == true, ""); - static_assert(*opt == 3, ""); - - struct test_constexpr_ctor - : public optional - { - constexpr test_constexpr_ctor(const T&) {} - }; - - } -#ifndef TEST_HAS_NO_EXCEPTIONS - { - typedef Z T; - try - { - const T t(3); - optional opt(t); - assert(false); - } - catch (int i) - { - assert(i == 6); - } - } -#endif -} diff --git a/test/std/experimental/optional/optional.object/optional.object.ctor/copy.pass.cpp b/test/std/experimental/optional/optional.object/optional.object.ctor/copy.pass.cpp deleted file mode 100644 index 4b66fe80b..000000000 --- a/test/std/experimental/optional/optional.object/optional.object.ctor/copy.pass.cpp +++ /dev/null @@ -1,139 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// optional(const optional& rhs); - -#include -#include -#include - -#include "test_macros.h" - -using std::experimental::optional; - -template -void -test(const optional& rhs, bool is_going_to_throw = false) -{ - bool rhs_engaged = static_cast(rhs); -#ifdef TEST_HAS_NO_EXCEPTIONS - if (is_going_to_throw) - return; -#else - try -#endif - { - optional lhs = rhs; - assert(is_going_to_throw == false); - assert(static_cast(lhs) == rhs_engaged); - if (rhs_engaged) - assert(*lhs == *rhs); - } -#ifndef TEST_HAS_NO_EXCEPTIONS - catch (int i) - { - assert(i == 6); - assert(is_going_to_throw); - } -#endif -} - -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) - TEST_THROW(6); - } - - friend constexpr bool operator==(const Z& x, const Z& y) {return x.i_ == y.i_;} -}; - - -int main() -{ - { - typedef int T; - optional rhs; - test(rhs); - } - { - typedef int T; - optional rhs(3); - test(rhs); - } - { - typedef const int T; - optional rhs(3); - test(rhs); - } - { - typedef X T; - optional rhs; - test(rhs); - } - { - typedef X T; - optional rhs(X(3)); - test(rhs); - } - { - typedef const X T; - optional rhs(X(3)); - test(rhs); - } - { - typedef Y T; - optional rhs; - test(rhs); - } - { - typedef Y T; - optional rhs(Y(3)); - test(rhs); - } - { - typedef Z T; - optional rhs; - test(rhs); - } - { - typedef Z T; - optional rhs(Z(3)); - test(rhs, true); - } -} diff --git a/test/std/experimental/optional/optional.object/optional.object.ctor/default.pass.cpp b/test/std/experimental/optional/optional.object/optional.object.ctor/default.pass.cpp deleted file mode 100644 index d24a1ac69..000000000 --- a/test/std/experimental/optional/optional.object/optional.object.ctor/default.pass.cpp +++ /dev/null @@ -1,62 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// constexpr optional() noexcept; - -#include -#include -#include - -using std::experimental::optional; - -template -void -test_constexpr() -{ - static_assert(std::is_nothrow_default_constructible::value, ""); - constexpr Opt opt; - static_assert(static_cast(opt) == false, ""); - - struct test_constexpr_ctor - : public Opt - { - constexpr test_constexpr_ctor() {} - }; - -} - -template -void -test() -{ - static_assert(std::is_nothrow_default_constructible::value, ""); - Opt opt; - assert(static_cast(opt) == false); - - struct test_constexpr_ctor - : public Opt - { - constexpr test_constexpr_ctor() {} - }; -} - -struct X -{ - X(); -}; - -int main() -{ - test_constexpr>(); - test_constexpr>(); - test>(); -} diff --git a/test/std/experimental/optional/optional.object/optional.object.ctor/in_place_t.pass.cpp b/test/std/experimental/optional/optional.object/optional.object.ctor/in_place_t.pass.cpp deleted file mode 100644 index c46407896..000000000 --- a/test/std/experimental/optional/optional.object/optional.object.ctor/in_place_t.pass.cpp +++ /dev/null @@ -1,144 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// -// -// UNSUPPORTED: c++98, c++03, c++11 - -// - -// template -// constexpr explicit optional(in_place_t, Args&&... args); - -#include -#include -#include - -#include "test_macros.h" - -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 -{ -public: - Z(int) {TEST_THROW(6);} -}; - - -int main() -{ - { - constexpr optional opt(in_place, 5); - static_assert(static_cast(opt) == true, ""); - static_assert(*opt == 5, ""); - - struct test_constexpr_ctor - : public optional - { - constexpr test_constexpr_ctor(in_place_t, int i) - : optional(in_place, i) {} - }; - - } - { - const optional opt(in_place); - assert(static_cast(opt) == true); - assert(*opt == X()); - } - { - const optional opt(in_place, 5); - assert(static_cast(opt) == true); - assert(*opt == X(5)); - } - { - const optional opt(in_place, 5, 4); - assert(static_cast(opt) == true); - assert(*opt == X(5, 4)); - } - { - constexpr optional opt(in_place); - static_assert(static_cast(opt) == true, ""); - static_assert(*opt == Y(), ""); - - struct test_constexpr_ctor - : public optional - { - constexpr test_constexpr_ctor(in_place_t) - : optional(in_place) {} - }; - - } - { - constexpr optional opt(in_place, 5); - static_assert(static_cast(opt) == true, ""); - static_assert(*opt == Y(5), ""); - - struct test_constexpr_ctor - : public optional - { - constexpr test_constexpr_ctor(in_place_t, int i) - : optional(in_place, i) {} - }; - - } - { - constexpr optional opt(in_place, 5, 4); - static_assert(static_cast(opt) == true, ""); - static_assert(*opt == Y(5, 4), ""); - - struct test_constexpr_ctor - : public optional - { - constexpr test_constexpr_ctor(in_place_t, int i, int j) - : optional(in_place, i, j) {} - }; - - } -#ifndef TEST_HAS_NO_EXCEPTIONS - { - try - { - const optional opt(in_place, 1); - assert(false); - } - catch (int i) - { - assert(i == 6); - } - } -#endif -} diff --git a/test/std/experimental/optional/optional.object/optional.object.ctor/initializer_list.pass.cpp b/test/std/experimental/optional/optional.object/optional.object.ctor/initializer_list.pass.cpp deleted file mode 100644 index b75c147df..000000000 --- a/test/std/experimental/optional/optional.object/optional.object.ctor/initializer_list.pass.cpp +++ /dev/null @@ -1,118 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// template -// constexpr -// explicit optional(in_place_t, initializer_list il, Args&&... args); - -#include -#include -#include -#include - -#include "test_macros.h" - -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 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) {} - Z(std::initializer_list il) : i_(il.begin()[0]), j_(il.begin()[1]) - {TEST_THROW(6);} - - friend constexpr bool operator==(const Z& x, const Z& y) - {return x.i_ == y.i_ && x.j_ == y.j_;} -}; - -int main() -{ - { - static_assert(!std::is_constructible&>::value, ""); - static_assert(!std::is_constructible, std::initializer_list&>::value, ""); - } - { - optional> opt(in_place, {3, 1}); - assert(static_cast(opt) == true); - assert((*opt == std::vector{3, 1})); - assert(opt->size() == 2); - } - { - optional> opt(in_place, {3, 1}, std::allocator()); - assert(static_cast(opt) == true); - assert((*opt == std::vector{3, 1})); - assert(opt->size() == 2); - } - { - static_assert(std::is_constructible, std::initializer_list&>::value, ""); - constexpr optional opt(in_place, {3, 1}); - static_assert(static_cast(opt) == true, ""); - static_assert(*opt == Y{3, 1}, ""); - - struct test_constexpr_ctor - : public optional - { - constexpr test_constexpr_ctor(in_place_t, std::initializer_list i) - : optional(in_place, i) {} - }; - - constexpr test_constexpr_ctor dopt(in_place, {42, 101, -1}); - static_assert(*dopt == Y{42, 101, -1}, ""); - } -#ifndef TEST_HAS_NO_EXCEPTIONS - { - static_assert(std::is_constructible, std::initializer_list&>::value, ""); - try - { - optional opt(in_place, {3, 1}); - assert(false); - } - catch (int i) - { - assert(i == 6); - } - } -#endif -} diff --git a/test/std/experimental/optional/optional.object/optional.object.ctor/move.pass.cpp b/test/std/experimental/optional/optional.object/optional.object.ctor/move.pass.cpp deleted file mode 100644 index a8bb6e9c2..000000000 --- a/test/std/experimental/optional/optional.object/optional.object.ctor/move.pass.cpp +++ /dev/null @@ -1,149 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// optional(optional&& rhs) noexcept(is_nothrow_move_constructible::value); - -#include -#include -#include - -#include "test_macros.h" - -using std::experimental::optional; - -template -void -test(optional& rhs, bool is_going_to_throw = false) -{ - static_assert(std::is_nothrow_move_constructible>::value == - std::is_nothrow_move_constructible::value, ""); - bool rhs_engaged = static_cast(rhs); -#ifdef TEST_HAS_NO_EXCEPTIONS - if (is_going_to_throw) - return; -#else - try -#endif - { - optional lhs = std::move(rhs); - assert(is_going_to_throw == false); - assert(static_cast(lhs) == rhs_engaged); - } -#ifndef TEST_HAS_NO_EXCEPTIONS - catch (int i) - { - assert(i == 6); - assert(is_going_to_throw); - } -#endif -} - -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) - TEST_THROW(6); - } - - friend constexpr bool operator==(const Z& x, const Z& y) {return x.i_ == y.i_;} -}; - - -class ConstMovable -{ - int i_; -public: - ConstMovable(int i) : i_(i) {} - ConstMovable(const ConstMovable&& x) : i_(x.i_) {} - ~ConstMovable() {i_ = 0;} - friend bool operator==(const ConstMovable& x, const ConstMovable& y) {return x.i_ == y.i_;} -}; - -int main() -{ - { - typedef int T; - optional rhs; - test(rhs); - } - { - typedef int T; - optional rhs(3); - test(rhs); - } - { - typedef const int T; - optional rhs(3); - test(rhs); - } - { - typedef X T; - optional rhs; - test(rhs); - } - { - typedef X T; - optional rhs(X(3)); - test(rhs); - } - { - typedef const ConstMovable T; - optional rhs(ConstMovable(3)); - test(rhs); - } - { - typedef Y T; - optional rhs; - test(rhs); - } - { - typedef Y T; - optional rhs(Y(3)); - test(rhs); - } - { - typedef Z T; - optional rhs; - test(rhs); - } - { - typedef Z T; - optional rhs(Z(3)); - test(rhs, true); - } -} diff --git a/test/std/experimental/optional/optional.object/optional.object.ctor/nullopt_t.pass.cpp b/test/std/experimental/optional/optional.object/optional.object.ctor/nullopt_t.pass.cpp deleted file mode 100644 index 40c96581e..000000000 --- a/test/std/experimental/optional/optional.object/optional.object.ctor/nullopt_t.pass.cpp +++ /dev/null @@ -1,63 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// constexpr optional(nullopt_t) noexcept; - -#include -#include -#include - -using std::experimental::optional; -using std::experimental::nullopt_t; -using std::experimental::nullopt; - -template -void -test_constexpr() -{ - static_assert(noexcept(Opt(nullopt)), ""); - constexpr Opt opt(nullopt); - static_assert(static_cast(opt) == false, ""); - - struct test_constexpr_ctor - : public Opt - { - constexpr test_constexpr_ctor() {} - }; -} - -template -void -test() -{ - static_assert(noexcept(Opt(nullopt)), ""); - Opt opt(nullopt); - assert(static_cast(opt) == false); - - struct test_constexpr_ctor - : public Opt - { - constexpr test_constexpr_ctor() {} - }; -} - -struct X -{ - X(); -}; - -int main() -{ - test_constexpr>(); - test_constexpr>(); - test>(); -} diff --git a/test/std/experimental/optional/optional.object/optional.object.ctor/rvalue_T.pass.cpp b/test/std/experimental/optional/optional.object/optional.object.ctor/rvalue_T.pass.cpp deleted file mode 100644 index 1941546a5..000000000 --- a/test/std/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. -// -//===----------------------------------------------------------------------===// -// -// UNSUPPORTED: c++98, c++03, c++11 - -// - -// constexpr optional(T&& v); - -#include -#include -#include - -#include "test_macros.h" - -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 -{ -public: - Z(int) {} - Z(Z&&) {TEST_THROW(6);} -}; - - -int main() -{ - { - typedef int T; - constexpr optional opt(T(5)); - static_assert(static_cast(opt) == true, ""); - static_assert(*opt == 5, ""); - - struct test_constexpr_ctor - : public optional - { - constexpr test_constexpr_ctor(T&&) {} - }; - } - { - typedef double T; - constexpr optional opt(T(3)); - static_assert(static_cast(opt) == true, ""); - static_assert(*opt == 3, ""); - - struct test_constexpr_ctor - : public optional - { - constexpr test_constexpr_ctor(T&&) {} - }; - } - { - typedef X T; - optional opt(T(3)); - assert(static_cast(opt) == true); - assert(*opt == 3); - } - { - typedef Y T; - constexpr optional opt(T(3)); - static_assert(static_cast(opt) == true, ""); - static_assert(*opt == 3, ""); - - struct test_constexpr_ctor - : public optional - { - constexpr test_constexpr_ctor(T&&) {} - }; - } -#ifndef TEST_HAS_NO_EXCEPTIONS - { - typedef Z T; - try - { - optional opt(T(3)); - assert(false); - } - catch (int i) - { - assert(i == 6); - } - } -#endif -} diff --git a/test/std/experimental/optional/optional.object/optional.object.dtor/dtor.pass.cpp b/test/std/experimental/optional/optional.object/optional.object.dtor/dtor.pass.cpp deleted file mode 100644 index 2bec19e6b..000000000 --- a/test/std/experimental/optional/optional.object/optional.object.dtor/dtor.pass.cpp +++ /dev/null @@ -1,54 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// ~optional(); - -#include -#include -#include - -using std::experimental::optional; - -class X -{ -public: - static bool dtor_called; - X() = default; - ~X() {dtor_called = true;} -}; - -bool X::dtor_called = false; - -int main() -{ - { - typedef int T; - static_assert(std::is_trivially_destructible::value, ""); - static_assert(std::is_trivially_destructible>::value, ""); - } - { - typedef double T; - static_assert(std::is_trivially_destructible::value, ""); - static_assert(std::is_trivially_destructible>::value, ""); - } - { - typedef X T; - static_assert(!std::is_trivially_destructible::value, ""); - static_assert(!std::is_trivially_destructible>::value, ""); - { - X x; - optional opt{x}; - assert(X::dtor_called == false); - } - assert(X::dtor_called == true); - } -} diff --git a/test/std/experimental/optional/optional.object/optional.object.observe/bool.pass.cpp b/test/std/experimental/optional/optional.object/optional.object.observe/bool.pass.cpp deleted file mode 100644 index a5bfae240..000000000 --- a/test/std/experimental/optional/optional.object/optional.object.observe/bool.pass.cpp +++ /dev/null @@ -1,31 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// constexpr explicit optional::operator bool() const noexcept; - -#include -#include -#include - -int main() -{ - using std::experimental::optional; - - { - constexpr optional opt; - static_assert(!opt, ""); - } - { - constexpr optional opt(0); - static_assert(opt, ""); - } -} diff --git a/test/std/experimental/optional/optional.object/optional.object.observe/dereference.pass.cpp b/test/std/experimental/optional/optional.object/optional.object.observe/dereference.pass.cpp deleted file mode 100644 index faba8d256..000000000 --- a/test/std/experimental/optional/optional.object/optional.object.observe/dereference.pass.cpp +++ /dev/null @@ -1,44 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// T& optional::operator*(); - -#ifdef _LIBCPP_DEBUG -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) -#endif - -#include -#include -#include - -using std::experimental::optional; - -struct X -{ - constexpr int test() const {return 3;} - int test() {return 4;} -}; - -int main() -{ - { - optional opt(X{}); - assert((*opt).test() == 4); - } -#ifdef _LIBCPP_DEBUG - { - optional opt; - assert((*opt).test() == 3); - assert(false); - } -#endif // _LIBCPP_DEBUG -} diff --git a/test/std/experimental/optional/optional.object/optional.object.observe/dereference_const.pass.cpp b/test/std/experimental/optional/optional.object/optional.object.observe/dereference_const.pass.cpp deleted file mode 100644 index f1bdc3642..000000000 --- a/test/std/experimental/optional/optional.object/optional.object.observe/dereference_const.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. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// constexpr const T& optional::operator*() const; - -#ifdef _LIBCPP_DEBUG -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) -#endif - -#include -#include -#include - -using std::experimental::optional; - -struct X -{ - constexpr int test() const {return 3;} -}; - -struct Y -{ - int test() const {return 2;} -}; - -int main() -{ - { - constexpr optional opt(X{}); - static_assert((*opt).test() == 3, ""); - } - { - constexpr optional opt(Y{}); - assert((*opt).test() == 2); - } -#ifdef _LIBCPP_DEBUG - { - const optional opt; - assert((*opt).test() == 3); - assert(false); - } -#endif // _LIBCPP_DEBUG -} diff --git a/test/std/experimental/optional/optional.object/optional.object.observe/op_arrow.pass.cpp b/test/std/experimental/optional/optional.object/optional.object.observe/op_arrow.pass.cpp deleted file mode 100644 index 954ccd71f..000000000 --- a/test/std/experimental/optional/optional.object/optional.object.observe/op_arrow.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. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// constexpr T* optional::operator->(); - -#ifdef _LIBCPP_DEBUG -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) -#endif - -#include -#include -#include - -using std::experimental::optional; - -struct X -{ - constexpr int test() const {return 3;} -}; - -int main() -{ - { - constexpr optional opt(X{}); - static_assert(opt->test() == 3, ""); - } -#ifdef _LIBCPP_DEBUG - { - optional opt; - assert(opt->test() == 3); - assert(false); - } -#endif // _LIBCPP_DEBUG -} diff --git a/test/std/experimental/optional/optional.object/optional.object.observe/op_arrow_const.pass.cpp b/test/std/experimental/optional/optional.object/optional.object.observe/op_arrow_const.pass.cpp deleted file mode 100644 index 46586c65a..000000000 --- a/test/std/experimental/optional/optional.object/optional.object.observe/op_arrow_const.pass.cpp +++ /dev/null @@ -1,65 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// constexpr const T* optional::operator->() const; - -#ifdef _LIBCPP_DEBUG -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) -#endif - -#include -#include -#include - -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;} -}; - -int main() -{ - { - constexpr optional opt(X{}); - static_assert(opt->test() == 3, ""); - } - { - constexpr optional opt(Y{}); - assert(opt->test() == 2); - } - { - constexpr optional opt(Z{}); - assert(opt->test() == 1); -#ifndef _LIBCPP_HAS_NO_BUILTIN_ADDRESSOF - static_assert(opt->test() == 1, ""); -#endif - } -#ifdef _LIBCPP_DEBUG - { - const optional opt; - assert(opt->test() == 3); - assert(false); - } -#endif // _LIBCPP_DEBUG -} diff --git a/test/std/experimental/optional/optional.object/optional.object.observe/value.pass.cpp b/test/std/experimental/optional/optional.object/optional.object.observe/value.pass.cpp deleted file mode 100644 index 72d779059..000000000 --- a/test/std/experimental/optional/optional.object/optional.object.observe/value.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. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// XFAIL: availability=macosx10.12 -// XFAIL: availability=macosx10.11 -// XFAIL: availability=macosx10.10 -// XFAIL: availability=macosx10.9 -// XFAIL: availability=macosx10.8 -// XFAIL: availability=macosx10.7 - -// - -// T& optional::value(); - -#include -#include -#include - -#include "test_macros.h" - -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;} -}; - -int main() -{ - { - optional opt; - opt.emplace(); - assert(opt.value().test() == 4); - } -#ifndef TEST_HAS_NO_EXCEPTIONS - { - optional opt; - try - { - opt.value(); - assert(false); - } - catch (const bad_optional_access&) - { - } - } -#endif -} diff --git a/test/std/experimental/optional/optional.object/optional.object.observe/value_const.fail.cpp b/test/std/experimental/optional/optional.object/optional.object.observe/value_const.fail.cpp deleted file mode 100644 index baad3b47f..000000000 --- a/test/std/experimental/optional/optional.object/optional.object.observe/value_const.fail.cpp +++ /dev/null @@ -1,33 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// constexpr const T& optional::value() const; - -#include -#include -#include - -using std::experimental::optional; - -struct X -{ - constexpr int test() const {return 3;} - int test() {return 4;} -}; - -int main() -{ - { - constexpr optional opt; - static_assert(opt.value().test() == 3, ""); - } -} diff --git a/test/std/experimental/optional/optional.object/optional.object.observe/value_const.pass.cpp b/test/std/experimental/optional/optional.object/optional.object.observe/value_const.pass.cpp deleted file mode 100644 index b3d6dfda4..000000000 --- a/test/std/experimental/optional/optional.object/optional.object.observe/value_const.pass.cpp +++ /dev/null @@ -1,64 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// XFAIL: availability=macosx10.12 -// XFAIL: availability=macosx10.11 -// XFAIL: availability=macosx10.10 -// XFAIL: availability=macosx10.9 -// XFAIL: availability=macosx10.8 -// XFAIL: availability=macosx10.7 - -// - -// constexpr const T& optional::value() const; - -#include -#include -#include - -#include "test_macros.h" - -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;} -}; - -int main() -{ - { - constexpr optional opt(in_place); - static_assert(opt.value().test() == 3, ""); - } - { - const optional opt(in_place); - assert(opt.value().test() == 3); - } -#ifndef TEST_HAS_NO_EXCEPTIONS - { - const optional opt; - try - { - opt.value(); - assert(false); - } - catch (const bad_optional_access&) - { - } - } -#endif -} diff --git a/test/std/experimental/optional/optional.object/optional.object.observe/value_or.pass.cpp b/test/std/experimental/optional/optional.object/optional.object.observe/value_or.pass.cpp deleted file mode 100644 index 6fca8c82c..000000000 --- a/test/std/experimental/optional/optional.object/optional.object.observe/value_or.pass.cpp +++ /dev/null @@ -1,66 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// template T optional::value_or(U&& v) &&; - -#include -#include -#include - -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_;} -}; - -int main() -{ - { - optional opt(in_place, 2); - Y y(3); - assert(std::move(opt).value_or(y) == 2); - assert(*opt == 0); - } - { - optional opt(in_place, 2); - assert(std::move(opt).value_or(Y(3)) == 2); - assert(*opt == 0); - } - { - optional opt; - Y y(3); - assert(std::move(opt).value_or(y) == 3); - assert(!opt); - } - { - optional opt; - assert(std::move(opt).value_or(Y(3)) == 4); - assert(!opt); - } -} diff --git a/test/std/experimental/optional/optional.object/optional.object.observe/value_or_const.pass.cpp b/test/std/experimental/optional/optional.object/optional.object.observe/value_or_const.pass.cpp deleted file mode 100644 index 4a008dce2..000000000 --- a/test/std/experimental/optional/optional.object/optional.object.observe/value_or_const.pass.cpp +++ /dev/null @@ -1,77 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// template constexpr T optional::value_or(U&& v) const&; - -#include -#include -#include - -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_;} -}; - -int main() -{ - { - constexpr optional opt(2); - constexpr Y y(3); - static_assert(opt.value_or(y) == 2, ""); - } - { - constexpr optional opt(2); - static_assert(opt.value_or(Y(3)) == 2, ""); - } - { - constexpr optional opt; - constexpr Y y(3); - static_assert(opt.value_or(y) == 3, ""); - } - { - constexpr optional opt; - static_assert(opt.value_or(Y(3)) == 4, ""); - } - { - const optional opt(2); - const Y y(3); - assert(opt.value_or(y) == 2); - } - { - const optional opt(2); - assert(opt.value_or(Y(3)) == 2); - } - { - const optional opt; - const Y y(3); - assert(opt.value_or(y) == 3); - } - { - const optional opt; - assert(opt.value_or(Y(3)) == 4); - } -} diff --git a/test/std/experimental/optional/optional.object/optional.object.swap/swap.pass.cpp b/test/std/experimental/optional/optional.object/optional.object.swap/swap.pass.cpp deleted file mode 100644 index f2d373c29..000000000 --- a/test/std/experimental/optional/optional.object/optional.object.swap/swap.pass.cpp +++ /dev/null @@ -1,313 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// void swap(optional&) -// noexcept(is_nothrow_move_constructible::value && -// noexcept(swap(declval(), declval()))); - -#include -#include -#include - -#include "test_macros.h" - -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&&) {TEST_THROW(7);} - - friend constexpr bool operator==(const Z& x, const Z& y) {return x.i_ == y.i_;} - friend void swap(Z&, Z&) {TEST_THROW(6);} -}; - -struct ConstSwappable { -}; -void swap(ConstSwappable const&, ConstSwappable const&) {} - -int main() -{ - { - optional opt1; - optional opt2; - static_assert(noexcept(opt1.swap(opt2)) == true, ""); - assert(static_cast(opt1) == false); - assert(static_cast(opt2) == false); - opt1.swap(opt2); - assert(static_cast(opt1) == false); - assert(static_cast(opt2) == false); - } - { - optional opt1(1); - optional opt2; - static_assert(noexcept(opt1.swap(opt2)) == true, ""); - assert(static_cast(opt1) == true); - assert(*opt1 == 1); - assert(static_cast(opt2) == false); - opt1.swap(opt2); - assert(static_cast(opt1) == false); - assert(static_cast(opt2) == true); - assert(*opt2 == 1); - } - { - optional opt1; - optional opt2(2); - static_assert(noexcept(opt1.swap(opt2)) == true, ""); - assert(static_cast(opt1) == false); - assert(static_cast(opt2) == true); - assert(*opt2 == 2); - opt1.swap(opt2); - assert(static_cast(opt1) == true); - assert(*opt1 == 2); - assert(static_cast(opt2) == false); - } - { - optional opt1(1); - optional opt2(2); - static_assert(noexcept(opt1.swap(opt2)) == true, ""); - assert(static_cast(opt1) == true); - assert(*opt1 == 1); - assert(static_cast(opt2) == true); - assert(*opt2 == 2); - opt1.swap(opt2); - assert(static_cast(opt1) == true); - assert(*opt1 == 2); - assert(static_cast(opt2) == true); - assert(*opt2 == 1); - } - { - optional opt; - optional opt2; - opt.swap(opt2); - } - { - optional opt1; - optional opt2; - static_assert(noexcept(opt1.swap(opt2)) == true, ""); - assert(static_cast(opt1) == false); - assert(static_cast(opt2) == false); - opt1.swap(opt2); - assert(static_cast(opt1) == false); - assert(static_cast(opt2) == false); - assert(X::dtor_called == 0); - } - { - optional opt1(1); - optional opt2; - static_assert(noexcept(opt1.swap(opt2)) == true, ""); - assert(static_cast(opt1) == true); - assert(*opt1 == 1); - assert(static_cast(opt2) == false); - X::dtor_called = 0; - opt1.swap(opt2); - assert(X::dtor_called == 1); - assert(static_cast(opt1) == false); - assert(static_cast(opt2) == true); - assert(*opt2 == 1); - } - { - optional opt1; - optional opt2(2); - static_assert(noexcept(opt1.swap(opt2)) == true, ""); - assert(static_cast(opt1) == false); - assert(static_cast(opt2) == true); - assert(*opt2 == 2); - X::dtor_called = 0; - opt1.swap(opt2); - assert(X::dtor_called == 1); - assert(static_cast(opt1) == true); - assert(*opt1 == 2); - assert(static_cast(opt2) == false); - } - { - optional opt1(1); - optional opt2(2); - static_assert(noexcept(opt1.swap(opt2)) == true, ""); - assert(static_cast(opt1) == true); - assert(*opt1 == 1); - assert(static_cast(opt2) == true); - assert(*opt2 == 2); - X::dtor_called = 0; - opt1.swap(opt2); - assert(X::dtor_called == 1); // from inside std::swap - assert(static_cast(opt1) == true); - assert(*opt1 == 2); - assert(static_cast(opt2) == true); - assert(*opt2 == 1); - } - { - optional opt1; - optional opt2; - static_assert(noexcept(opt1.swap(opt2)) == false, ""); - assert(static_cast(opt1) == false); - assert(static_cast(opt2) == false); - opt1.swap(opt2); - assert(static_cast(opt1) == false); - assert(static_cast(opt2) == false); - assert(Y::dtor_called == 0); - } - { - optional opt1(1); - optional opt2; - static_assert(noexcept(opt1.swap(opt2)) == false, ""); - assert(static_cast(opt1) == true); - assert(*opt1 == 1); - assert(static_cast(opt2) == false); - Y::dtor_called = 0; - opt1.swap(opt2); - assert(Y::dtor_called == 1); - assert(static_cast(opt1) == false); - assert(static_cast(opt2) == true); - assert(*opt2 == 1); - } - { - optional opt1; - optional opt2(2); - static_assert(noexcept(opt1.swap(opt2)) == false, ""); - assert(static_cast(opt1) == false); - assert(static_cast(opt2) == true); - assert(*opt2 == 2); - Y::dtor_called = 0; - opt1.swap(opt2); - assert(Y::dtor_called == 1); - assert(static_cast(opt1) == true); - assert(*opt1 == 2); - assert(static_cast(opt2) == false); - } - { - optional opt1(1); - optional opt2(2); - static_assert(noexcept(opt1.swap(opt2)) == false, ""); - assert(static_cast(opt1) == true); - assert(*opt1 == 1); - assert(static_cast(opt2) == true); - assert(*opt2 == 2); - Y::dtor_called = 0; - opt1.swap(opt2); - assert(Y::dtor_called == 0); - assert(static_cast(opt1) == true); - assert(*opt1 == 2); - assert(static_cast(opt2) == true); - assert(*opt2 == 1); - } -#ifndef TEST_HAS_NO_EXCEPTIONS - { - optional opt1; - optional opt2; - static_assert(noexcept(opt1.swap(opt2)) == false, ""); - assert(static_cast(opt1) == false); - assert(static_cast(opt2) == false); - opt1.swap(opt2); - assert(static_cast(opt1) == false); - assert(static_cast(opt2) == false); - } - { - optional opt1; - opt1.emplace(1); - optional opt2; - static_assert(noexcept(opt1.swap(opt2)) == false, ""); - assert(static_cast(opt1) == true); - assert(*opt1 == 1); - assert(static_cast(opt2) == false); - try - { - opt1.swap(opt2); - assert(false); - } - catch (int i) - { - assert(i == 7); - } - assert(static_cast(opt1) == true); - assert(*opt1 == 1); - assert(static_cast(opt2) == false); - } - { - optional opt1; - optional opt2; - opt2.emplace(2); - static_assert(noexcept(opt1.swap(opt2)) == false, ""); - assert(static_cast(opt1) == false); - assert(static_cast(opt2) == true); - assert(*opt2 == 2); - try - { - opt1.swap(opt2); - assert(false); - } - catch (int i) - { - assert(i == 7); - } - assert(static_cast(opt1) == false); - assert(static_cast(opt2) == true); - assert(*opt2 == 2); - } - { - optional opt1; - opt1.emplace(1); - optional opt2; - opt2.emplace(2); - static_assert(noexcept(opt1.swap(opt2)) == false, ""); - assert(static_cast(opt1) == true); - assert(*opt1 == 1); - assert(static_cast(opt2) == true); - assert(*opt2 == 2); - try - { - opt1.swap(opt2); - assert(false); - } - catch (int i) - { - assert(i == 6); - } - assert(static_cast(opt1) == true); - assert(*opt1 == 1); - assert(static_cast(opt2) == true); - assert(*opt2 == 2); - } -#endif -} diff --git a/test/std/experimental/optional/optional.object/optional_const_void.fail.cpp b/test/std/experimental/optional/optional.object/optional_const_void.fail.cpp deleted file mode 100644 index 02c0a3a63..000000000 --- a/test/std/experimental/optional/optional.object/optional_const_void.fail.cpp +++ /dev/null @@ -1,22 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// T shall be an object type and shall satisfy the requirements of Destructible - -#include - -int main() -{ - using std::experimental::optional; - - optional opt; -} diff --git a/test/std/experimental/optional/optional.object/optional_not_destructible.fail.cpp b/test/std/experimental/optional/optional.object/optional_not_destructible.fail.cpp deleted file mode 100644 index da8bd05f2..000000000 --- a/test/std/experimental/optional/optional.object/optional_not_destructible.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. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// T shall be an object type and shall satisfy the requirements of Destructible - -#include - -using std::experimental::optional; - -struct X -{ -private: - ~X() {} -}; - -int main() -{ - optional opt; -} diff --git a/test/std/experimental/optional/optional.object/optional_not_noexcept_destructible.fail.cpp b/test/std/experimental/optional/optional.object/optional_not_noexcept_destructible.fail.cpp deleted file mode 100644 index 7aa179afe..000000000 --- a/test/std/experimental/optional/optional.object/optional_not_noexcept_destructible.fail.cpp +++ /dev/null @@ -1,27 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// T shall be an object type and shall satisfy the requirements of Destructible - -#include - -using std::experimental::optional; - -struct X -{ - ~X() noexcept(false) {} -}; - -int main() -{ - optional opt; -} diff --git a/test/std/experimental/optional/optional.object/optional_void.fail.cpp b/test/std/experimental/optional/optional.object/optional_void.fail.cpp deleted file mode 100644 index 73f689c56..000000000 --- a/test/std/experimental/optional/optional.object/optional_void.fail.cpp +++ /dev/null @@ -1,22 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// T shall be an object type and shall satisfy the requirements of Destructible - -#include - -int main() -{ - using std::experimental::optional; - - optional opt; -} diff --git a/test/std/experimental/optional/optional.object/types.pass.cpp b/test/std/experimental/optional/optional.object/types.pass.cpp deleted file mode 100644 index af8da2df8..000000000 --- a/test/std/experimental/optional/optional.object/types.pass.cpp +++ /dev/null @@ -1,38 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// template -// class optional -// { -// public: -// typedef T value_type; -// ... - -#include -#include - -using std::experimental::optional; - -template -void -test() -{ - static_assert(std::is_same::value, ""); -} - -int main() -{ - test, int>(); - test, const int>(); - test, double>(); - test, const double>(); -} diff --git a/test/std/experimental/optional/optional.relops/equal.pass.cpp b/test/std/experimental/optional/optional.relops/equal.pass.cpp deleted file mode 100644 index 413e7c8b3..000000000 --- a/test/std/experimental/optional/optional.relops/equal.pass.cpp +++ /dev/null @@ -1,74 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// template constexpr bool operator==(const optional& x, const optional& y); - -#include -#include -#include - -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_ ; } - -int main() -{ - { - typedef X T; - typedef optional 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 , "" ); - - } -} diff --git a/test/std/experimental/optional/optional.relops/greater_equal.pass.cpp b/test/std/experimental/optional/optional.relops/greater_equal.pass.cpp deleted file mode 100644 index c0739dda6..000000000 --- a/test/std/experimental/optional/optional.relops/greater_equal.pass.cpp +++ /dev/null @@ -1,70 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// template constexpr bool operator>= (const optional& x, const optional& y); - -#include - -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_ ; } - -int main() -{ - { - typedef optional 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), "" ); - } -} diff --git a/test/std/experimental/optional/optional.relops/greater_than.pass.cpp b/test/std/experimental/optional/optional.relops/greater_than.pass.cpp deleted file mode 100644 index df7dbb647..000000000 --- a/test/std/experimental/optional/optional.relops/greater_than.pass.cpp +++ /dev/null @@ -1,70 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// template constexpr bool operator> (const optional& x, const optional& y); - -#include - -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_ ; } - -int main() -{ - { - typedef optional 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), "" ); - } -} diff --git a/test/std/experimental/optional/optional.relops/less_equal.pass.cpp b/test/std/experimental/optional/optional.relops/less_equal.pass.cpp deleted file mode 100644 index d4874d17b..000000000 --- a/test/std/experimental/optional/optional.relops/less_equal.pass.cpp +++ /dev/null @@ -1,70 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// template constexpr bool operator<= (const optional& x, const optional& y); - -#include - -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_ ; } - -int main() -{ - { - typedef optional 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), "" ); - } -} diff --git a/test/std/experimental/optional/optional.relops/less_than.pass.cpp b/test/std/experimental/optional/optional.relops/less_than.pass.cpp deleted file mode 100644 index 411340826..000000000 --- a/test/std/experimental/optional/optional.relops/less_than.pass.cpp +++ /dev/null @@ -1,70 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// template constexpr bool operator< (const optional& x, const optional& y); - -#include - -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_ ; } - -int main() -{ - { - typedef optional 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), "" ); - } -} diff --git a/test/std/experimental/optional/optional.relops/not_equal.pass.cpp b/test/std/experimental/optional/optional.relops/not_equal.pass.cpp deleted file mode 100644 index 19a196317..000000000 --- a/test/std/experimental/optional/optional.relops/not_equal.pass.cpp +++ /dev/null @@ -1,74 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// template constexpr bool operator!=(const optional& x, const optional& y); - -#include -#include -#include - -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_ ; } - -int main() -{ - { - typedef X T; - typedef optional 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), "" ); - - } -} diff --git a/test/std/experimental/optional/optional.specalg/make_optional.pass.cpp b/test/std/experimental/optional/optional.specalg/make_optional.pass.cpp deleted file mode 100644 index 9abd87bd4..000000000 --- a/test/std/experimental/optional/optional.specalg/make_optional.pass.cpp +++ /dev/null @@ -1,51 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// template -// constexpr -// optional::type> -// make_optional(T&& v); - -#include -#include -#include -#include - -#include "test_macros.h" - -int main() -{ - using std::experimental::optional; - using std::experimental::make_optional; - - { - optional opt = make_optional(2); - assert(*opt == 2); - } - { - std::string s("123"); - optional opt = make_optional(s); - assert(*opt == s); - } - { - std::string s("123"); - optional opt = make_optional(std::move(s)); - assert(*opt == "123"); - LIBCPP_ASSERT(s.empty()); - } - { - std::unique_ptr s(new int(3)); - optional> opt = make_optional(std::move(s)); - assert(**opt == 3); - assert(s == nullptr); - } -} diff --git a/test/std/experimental/optional/optional.specalg/swap.pass.cpp b/test/std/experimental/optional/optional.specalg/swap.pass.cpp deleted file mode 100644 index 4d643cb44..000000000 --- a/test/std/experimental/optional/optional.specalg/swap.pass.cpp +++ /dev/null @@ -1,303 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// template void swap(optional& x, optional& y) -// noexcept(noexcept(x.swap(y))); - -#include -#include -#include - -#include "test_macros.h" - -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&&) {TEST_THROW(7);} - - friend constexpr bool operator==(const Z& x, const Z& y) {return x.i_ == y.i_;} - friend void swap(Z&, Z&) {TEST_THROW(6);} -}; - -int main() -{ - { - optional opt1; - optional opt2; - static_assert(noexcept(swap(opt1, opt2)) == true, ""); - assert(static_cast(opt1) == false); - assert(static_cast(opt2) == false); - swap(opt1, opt2); - assert(static_cast(opt1) == false); - assert(static_cast(opt2) == false); - } - { - optional opt1(1); - optional opt2; - static_assert(noexcept(swap(opt1, opt2)) == true, ""); - assert(static_cast(opt1) == true); - assert(*opt1 == 1); - assert(static_cast(opt2) == false); - swap(opt1, opt2); - assert(static_cast(opt1) == false); - assert(static_cast(opt2) == true); - assert(*opt2 == 1); - } - { - optional opt1; - optional opt2(2); - static_assert(noexcept(swap(opt1, opt2)) == true, ""); - assert(static_cast(opt1) == false); - assert(static_cast(opt2) == true); - assert(*opt2 == 2); - swap(opt1, opt2); - assert(static_cast(opt1) == true); - assert(*opt1 == 2); - assert(static_cast(opt2) == false); - } - { - optional opt1(1); - optional opt2(2); - static_assert(noexcept(swap(opt1, opt2)) == true, ""); - assert(static_cast(opt1) == true); - assert(*opt1 == 1); - assert(static_cast(opt2) == true); - assert(*opt2 == 2); - swap(opt1, opt2); - assert(static_cast(opt1) == true); - assert(*opt1 == 2); - assert(static_cast(opt2) == true); - assert(*opt2 == 1); - } - { - optional opt1; - optional opt2; - static_assert(noexcept(swap(opt1, opt2)) == true, ""); - assert(static_cast(opt1) == false); - assert(static_cast(opt2) == false); - swap(opt1, opt2); - assert(static_cast(opt1) == false); - assert(static_cast(opt2) == false); - assert(X::dtor_called == 0); - } - { - optional opt1(1); - optional opt2; - static_assert(noexcept(swap(opt1, opt2)) == true, ""); - assert(static_cast(opt1) == true); - assert(*opt1 == 1); - assert(static_cast(opt2) == false); - X::dtor_called = 0; - swap(opt1, opt2); - assert(X::dtor_called == 1); - assert(static_cast(opt1) == false); - assert(static_cast(opt2) == true); - assert(*opt2 == 1); - } - { - optional opt1; - optional opt2(2); - static_assert(noexcept(swap(opt1, opt2)) == true, ""); - assert(static_cast(opt1) == false); - assert(static_cast(opt2) == true); - assert(*opt2 == 2); - X::dtor_called = 0; - swap(opt1, opt2); - assert(X::dtor_called == 1); - assert(static_cast(opt1) == true); - assert(*opt1 == 2); - assert(static_cast(opt2) == false); - } - { - optional opt1(1); - optional opt2(2); - static_assert(noexcept(swap(opt1, opt2)) == true, ""); - assert(static_cast(opt1) == true); - assert(*opt1 == 1); - assert(static_cast(opt2) == true); - assert(*opt2 == 2); - X::dtor_called = 0; - swap(opt1, opt2); - assert(X::dtor_called == 1); // from inside std::swap - assert(static_cast(opt1) == true); - assert(*opt1 == 2); - assert(static_cast(opt2) == true); - assert(*opt2 == 1); - } - { - optional opt1; - optional opt2; - static_assert(noexcept(swap(opt1, opt2)) == false, ""); - assert(static_cast(opt1) == false); - assert(static_cast(opt2) == false); - swap(opt1, opt2); - assert(static_cast(opt1) == false); - assert(static_cast(opt2) == false); - assert(Y::dtor_called == 0); - } - { - optional opt1(1); - optional opt2; - static_assert(noexcept(swap(opt1, opt2)) == false, ""); - assert(static_cast(opt1) == true); - assert(*opt1 == 1); - assert(static_cast(opt2) == false); - Y::dtor_called = 0; - swap(opt1, opt2); - assert(Y::dtor_called == 1); - assert(static_cast(opt1) == false); - assert(static_cast(opt2) == true); - assert(*opt2 == 1); - } - { - optional opt1; - optional opt2(2); - static_assert(noexcept(swap(opt1, opt2)) == false, ""); - assert(static_cast(opt1) == false); - assert(static_cast(opt2) == true); - assert(*opt2 == 2); - Y::dtor_called = 0; - swap(opt1, opt2); - assert(Y::dtor_called == 1); - assert(static_cast(opt1) == true); - assert(*opt1 == 2); - assert(static_cast(opt2) == false); - } - { - optional opt1(1); - optional opt2(2); - static_assert(noexcept(swap(opt1, opt2)) == false, ""); - assert(static_cast(opt1) == true); - assert(*opt1 == 1); - assert(static_cast(opt2) == true); - assert(*opt2 == 2); - Y::dtor_called = 0; - swap(opt1, opt2); - assert(Y::dtor_called == 0); - assert(static_cast(opt1) == true); - assert(*opt1 == 2); - assert(static_cast(opt2) == true); - assert(*opt2 == 1); - } - { - optional opt1; - optional opt2; - static_assert(noexcept(swap(opt1, opt2)) == false, ""); - assert(static_cast(opt1) == false); - assert(static_cast(opt2) == false); - swap(opt1, opt2); - assert(static_cast(opt1) == false); - assert(static_cast(opt2) == false); - } -#ifndef TEST_HAS_NO_EXCEPTIONS - { - optional opt1; - opt1.emplace(1); - optional opt2; - static_assert(noexcept(swap(opt1, opt2)) == false, ""); - assert(static_cast(opt1) == true); - assert(*opt1 == 1); - assert(static_cast(opt2) == false); - try - { - swap(opt1, opt2); - assert(false); - } - catch (int i) - { - assert(i == 7); - } - assert(static_cast(opt1) == true); - assert(*opt1 == 1); - assert(static_cast(opt2) == false); - } - { - optional opt1; - optional opt2; - opt2.emplace(2); - static_assert(noexcept(swap(opt1, opt2)) == false, ""); - assert(static_cast(opt1) == false); - assert(static_cast(opt2) == true); - assert(*opt2 == 2); - try - { - swap(opt1, opt2); - assert(false); - } - catch (int i) - { - assert(i == 7); - } - assert(static_cast(opt1) == false); - assert(static_cast(opt2) == true); - assert(*opt2 == 2); - } - { - optional opt1; - opt1.emplace(1); - optional opt2; - opt2.emplace(2); - static_assert(noexcept(swap(opt1, opt2)) == false, ""); - assert(static_cast(opt1) == true); - assert(*opt1 == 1); - assert(static_cast(opt2) == true); - assert(*opt2 == 2); - try - { - swap(opt1, opt2); - assert(false); - } - catch (int i) - { - assert(i == 6); - } - assert(static_cast(opt1) == true); - assert(*opt1 == 1); - assert(static_cast(opt2) == true); - assert(*opt2 == 2); - } -#endif // TEST_HAS_NO_EXCEPTIONS -} diff --git a/test/std/experimental/optional/optional.syn/optional_const_in_place_t.fail.cpp b/test/std/experimental/optional/optional.syn/optional_const_in_place_t.fail.cpp deleted file mode 100644 index bdf01eba4..000000000 --- a/test/std/experimental/optional/optional.syn/optional_const_in_place_t.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. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// A program that necessitates the instantiation of template optional for -// (possibly cv-qualified) in_place_t is ill-formed. - -#include - -int main() -{ - using std::experimental::optional; - using std::experimental::in_place_t; - using std::experimental::in_place; - - optional opt; -} diff --git a/test/std/experimental/optional/optional.syn/optional_const_lvalue_ref.fail.cpp b/test/std/experimental/optional/optional.syn/optional_const_lvalue_ref.fail.cpp deleted file mode 100644 index 61393c105..000000000 --- a/test/std/experimental/optional/optional.syn/optional_const_lvalue_ref.fail.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. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// A program that necessitates the instantiation of template optional for a -// reference type is ill-formed. - -#include - -int main() -{ - using std::experimental::optional; - - optional opt; -} diff --git a/test/std/experimental/optional/optional.syn/optional_const_nullopt_t.fail.cpp b/test/std/experimental/optional/optional.syn/optional_const_nullopt_t.fail.cpp deleted file mode 100644 index 89c207306..000000000 --- a/test/std/experimental/optional/optional.syn/optional_const_nullopt_t.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. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// A program that necessitates the instantiation of template optional for -// (possibly cv-qualified) nullopt_t is ill-formed. - -#include - -int main() -{ - using std::experimental::optional; - using std::experimental::nullopt_t; - using std::experimental::nullopt; - - optional opt; -} diff --git a/test/std/experimental/optional/optional.syn/optional_in_place_t.fail.cpp b/test/std/experimental/optional/optional.syn/optional_in_place_t.fail.cpp deleted file mode 100644 index 47c2be7da..000000000 --- a/test/std/experimental/optional/optional.syn/optional_in_place_t.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. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// A program that necessitates the instantiation of template optional for -// (possibly cv-qualified) in_place_t is ill-formed. - -#include - -int main() -{ - using std::experimental::optional; - using std::experimental::in_place_t; - using std::experimental::in_place; - - optional opt; -} diff --git a/test/std/experimental/optional/optional.syn/optional_includes_initializer_list.pass.cpp b/test/std/experimental/optional/optional.syn/optional_includes_initializer_list.pass.cpp deleted file mode 100644 index b8fba47f7..000000000 --- a/test/std/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. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// #include - -#include - -int main() -{ - using std::experimental::optional; - - std::initializer_list list; - (void)list; -} diff --git a/test/std/experimental/optional/optional.syn/optional_lvalue_ref.fail.cpp b/test/std/experimental/optional/optional.syn/optional_lvalue_ref.fail.cpp deleted file mode 100644 index de2f18991..000000000 --- a/test/std/experimental/optional/optional.syn/optional_lvalue_ref.fail.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. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// A program that necessitates the instantiation of template optional for a -// reference type is ill-formed. - -#include - -int main() -{ - using std::experimental::optional; - - optional opt; -} diff --git a/test/std/experimental/optional/optional.syn/optional_nullopt_t.fail.cpp b/test/std/experimental/optional/optional.syn/optional_nullopt_t.fail.cpp deleted file mode 100644 index 3d276d642..000000000 --- a/test/std/experimental/optional/optional.syn/optional_nullopt_t.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. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// A program that necessitates the instantiation of template optional for -// (possibly cv-qualified) nullopt_t is ill-formed. - -#include - -int main() -{ - using std::experimental::optional; - using std::experimental::nullopt_t; - using std::experimental::nullopt; - - optional opt; -} diff --git a/test/std/experimental/optional/optional.syn/optional_rvalue_ref.fail.cpp b/test/std/experimental/optional/optional.syn/optional_rvalue_ref.fail.cpp deleted file mode 100644 index fd6da18e8..000000000 --- a/test/std/experimental/optional/optional.syn/optional_rvalue_ref.fail.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. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11 -// - -// A program that necessitates the instantiation of template optional for a -// reference type is ill-formed. - -#include - -int main() -{ - using std::experimental::optional; - - optional opt; -}