Files
libcxx/test/std/utilities/optional/optional.nullopt/nullopt_t.pass.cpp
Stephan T. Lavavej fdbd18ff71 [libcxx] [test] Strip trailing whitespace.
No functional change, no code review.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@294161 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-05 22:48:27 +00:00

44 lines
1.2 KiB
C++

//===----------------------------------------------------------------------===//
//
// 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, c++14
// <optional>
// struct nullopt_t{see below};
// 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.
#include <optional>
#include <type_traits>
using std::optional;
using std::nullopt_t;
using std::nullopt;
constexpr
int
test(const nullopt_t&)
{
return 3;
}
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(test(nullopt) == 3, "");
}