std::experimental::optional
From cppreference.com
< cpp | experimental
| ヘッダ <experimental/optional>で定義 |
||
| template< class T > class optional; |
(Library Fundamentals TS) | |
クラステンプレート std::experimental::optional は、*optional* な保持値、つまり存在する場合も存在しない場合もある値を管理します。
optional の一般的なユースケースは、失敗する可能性のある関数の戻り値です。std::pair<T,bool> のような他のアプローチとは異なり、optional は構築にコストのかかるオブジェクトをうまく処理し、意図が明示的に表現されるため、より読みやすくなります。
任意の時点での optional<T> のインスタンスは、*値を保持している* か、*値を保持していない* のいずれかです。
optional<T> が*値を保持している*場合、その値は optional オブジェクトのフットプリントの一部として割り当てられることが保証されます。つまり、動的なメモリ割り当ては一切発生しません。したがって、optional オブジェクトは、operator*() および operator->() が定義されているにもかかわらず、ポインタではなくオブジェクトをモデル化します。
型 optional<T> のオブジェクトが 文脈的に bool に変換されると、オブジェクトが*値を保持している*場合は true、*値を保持していない*場合は false が返されます。
optional オブジェクトは、以下の条件で*値を保持します*。
- オブジェクトが型
Tの値で初期化された場合。 - オブジェクトが*値を保持している*別の
optionalから代入された場合。
オブジェクトは、以下の条件で*値を保持しません*。
- オブジェクトがデフォルト初期化された場合。
- オブジェクトが std::experimental::nullopt_t の値、または*値を保持していない*
optionalオブジェクトで初期化された場合。 - オブジェクトが std::experimental::nullopt_t の値、または*値を保持していない*
optionalから代入された場合。
目次 |
[編集] テンプレートパラメータ
| T | - | 管理する値の型。初期化状態を管理します。この型は Destructible の要件を満たす必要があります。 |
[編集] メンバ型
| メンバ型 | 定義 |
value_type
|
T
|
[編集] メンバ関数
| optional オブジェクトを構築します。 (public member function) | |
| 保持されている値があれば、それを破棄する (public member function) | |
| 内容を代入する (public member function) | |
監視 | |
| 保持されている値にアクセスする (public member function) | |
| オブジェクトが値を保持しているか確認する (public member function) | |
| 保持されている値を返す (public member function) | |
| 保持されている値が利用可能であればそれを返し、そうでなければ別の値を返す (public member function) | |
変更 | |
| 内容を交換する (public member function) | |
| 保持する値を直接構築する (public member function) | |
[編集] メンバオブジェクト
| メンバ名 | 定義 |
val (private) |
保持値へのポインタ(同じオブジェクトのデータメンバを指します)。名前は説明のためだけに使用されます。 |
[編集] 非メンバ関数
optional オブジェクトを比較する(function template) | |
optional オブジェクトを作成する(関数テンプレート) | |
| std::swap アルゴリズムを特殊化する (関数) |
[編集] ヘルパークラス
| std::hash アルゴリズムを特殊化します。 (class template specialization) | |
| (Library Fundamentals TS) |
未初期化状態の optional 型のインジケーター (クラス) |
| (Library Fundamentals TS) |
optional 型のインプレース構築のための曖昧解消タグ型。 (class) |
| (Library Fundamentals TS) |
値を保持していない optional へのチェック付きアクセスを示す例外 (クラス) |
[編集] ヘルパーオブジェクト
| (Library Fundamentals TS) |
nullopt_t 型のオブジェクト(function) |
| (Library Fundamentals TS) |
std::experimental::in_place_t 型のオブジェクト。 (function) |