diff options
Diffstat (limited to 'test/std/utilities/optional/optional.nullopt/nullopt_t.pass.cpp')
-rw-r--r-- | test/std/utilities/optional/optional.nullopt/nullopt_t.pass.cpp | 25 |
1 files changed, 11 insertions, 14 deletions
diff --git a/test/std/utilities/optional/optional.nullopt/nullopt_t.pass.cpp b/test/std/utilities/optional/optional.nullopt/nullopt_t.pass.cpp index 9b752a665a83..247fce58fe97 100644 --- a/test/std/utilities/optional/optional.nullopt/nullopt_t.pass.cpp +++ b/test/std/utilities/optional/optional.nullopt/nullopt_t.pass.cpp @@ -11,33 +11,30 @@ // <optional> // struct nullopt_t{see below}; -// constexpr nullopt_t nullopt(unspecified); +// inline constexpr nullopt_t nullopt(unspecified); // [optional.nullopt]/2: -// Type nullopt_t shall not have a default constructor or an initializer-list constructor. -// It shall not be an aggregate and shall be a literal type. -// Constant nullopt shall be initialized with an argument of literal type. +// Type nullopt_t shall not have a default constructor or an initializer-list +// constructor, and shall not be an aggregate. #include <optional> #include <type_traits> -using std::optional; using std::nullopt_t; using std::nullopt; -constexpr -int -test(const nullopt_t&) +constexpr bool test() { - return 3; + nullopt_t foo{nullopt}; + (void)foo; + return true; } int main() { - static_assert(( std::is_class<nullopt_t>::value), ""); - static_assert(( std::is_empty<nullopt_t>::value), ""); - static_assert(( std::is_literal_type<nullopt_t>::value), ""); - static_assert((!std::is_default_constructible<nullopt_t>::value), ""); + static_assert(std::is_empty_v<nullopt_t>); + static_assert(!std::is_default_constructible_v<nullopt_t>); - static_assert(test(nullopt) == 3, ""); + static_assert(std::is_same_v<const nullopt_t, decltype(nullopt)>); + static_assert(test()); } |