brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.1 KiB · 842b758 Raw
44 lines · cpp
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9// UNSUPPORTED: c++03, c++11, c++1410// <optional>11 12// struct nullopt_t{see below};13// inline constexpr nullopt_t nullopt(unspecified);14 15// [optional.nullopt]/2:16//   Type nullopt_t shall not have a default constructor or an initializer-list17//   constructor, and shall not be an aggregate.18 19#include <optional>20#include <type_traits>21 22#include "test_macros.h"23 24using std::nullopt_t;25using std::nullopt;26 27constexpr bool test()28{29    nullopt_t foo{nullopt};30    (void)foo;31    return true;32}33 34int main(int, char**)35{36    static_assert(std::is_empty_v<nullopt_t>);37    static_assert(!std::is_default_constructible_v<nullopt_t>);38 39    static_assert(std::is_same_v<const nullopt_t, decltype(nullopt)>);40    static_assert(test());41 42  return 0;43}44