diff options
Diffstat (limited to 'libcxx')
3 files changed, 14 insertions, 4 deletions
diff --git a/libcxx/include/optional b/libcxx/include/optional index 8c7a242113a..70b6eb44dcd 100644 --- a/libcxx/include/optional +++ b/libcxx/include/optional @@ -599,8 +599,8 @@ private: public: _LIBCPP_INLINE_VISIBILITY constexpr optional() noexcept {} - _LIBCPP_INLINE_VISIBILITY optional(const optional&) = default; - _LIBCPP_INLINE_VISIBILITY optional(optional&&) = default; + _LIBCPP_INLINE_VISIBILITY constexpr optional(const optional&) = default; + _LIBCPP_INLINE_VISIBILITY constexpr optional(optional&&) = default; _LIBCPP_INLINE_VISIBILITY constexpr optional(nullopt_t) noexcept {} template <class... _Args, class = enable_if_t< diff --git a/libcxx/test/std/utilities/optional/optional.object/optional.object.ctor/copy.pass.cpp b/libcxx/test/std/utilities/optional/optional.object/optional.object.ctor/copy.pass.cpp index 5906d4edd11..76c1fb82b86 100644 --- a/libcxx/test/std/utilities/optional/optional.object/optional.object.ctor/copy.pass.cpp +++ b/libcxx/test/std/utilities/optional/optional.object/optional.object.ctor/copy.pass.cpp @@ -10,7 +10,7 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 // <optional> -// optional(const optional<T>& rhs); +// constexpr optional(const optional<T>& rhs); #include <optional> #include <type_traits> @@ -152,4 +152,9 @@ int main() { test_reference_extension(); } + { + constexpr std::optional<int> o1{4}; + constexpr std::optional<int> o2 = o1; + static_assert( *o2 == 4, "" ); + } } diff --git a/libcxx/test/std/utilities/optional/optional.object/optional.object.ctor/move.pass.cpp b/libcxx/test/std/utilities/optional/optional.object/optional.object.ctor/move.pass.cpp index 9f23e9b4381..09aaa0561b5 100644 --- a/libcxx/test/std/utilities/optional/optional.object/optional.object.ctor/move.pass.cpp +++ b/libcxx/test/std/utilities/optional/optional.object/optional.object.ctor/move.pass.cpp @@ -18,7 +18,7 @@ // <optional> -// optional(optional<T>&& rhs); +// constexpr optional(optional<T>&& rhs); #include <optional> #include <type_traits> @@ -206,4 +206,9 @@ int main() { test_reference_extension(); } + { + constexpr std::optional<int> o1{4}; + constexpr std::optional<int> o2 = std::move(o1); + static_assert( *o2 == 4, "" ); + } } |