- optional[meta header]
- std[meta namespace]
- class[meta id-type]
- cpp17[meta cpp]
namespace std {
struct nullopt_t {以下参照};
inline constexpr nullopt_t nullopt {unspecified};
}
- unspecified[italic]
nullopt_t
は、実装を持たない空のクラスである。この型は、std::optional
クラスにおいて、有効な値を保持していない状態を表すために使用される。
この型の値を持つnullopt
定数をstd::optional
クラスのオブジェクトに代入することで、有効な値を保持していない状態にできる。
nullopt_t
クラスは、デフォルトコンストラクタおよび初期化子リストコンストラクタを持たない。これは、nullopt
変数をnullopt_t
型の唯一の値とするためである。また、nullopt_t
は集成体ではない。これはoptional<T> opt = {};
を曖昧にしないためである。
#include <cassert>
#include <optional>
int main()
{
std::optional<int> p;
assert(!p); // デフォルトでは有効な値を持たない (nullopt状態)
p = 3; // 有効値を代入
assert(p); // 有効な値を持つ
p = std::nullopt; // 無効値を代入
assert(!p); // 有効な値を持たない
}
- std::nullopt[color ff0000]
- C++17
- Clang, C++17 mode: 4.0.1
- GCC, C++17 mode: 7.2
- ICC: ??
- Visual C++: ??