std::experimental:: optional
|
ヘッダーで定義
<experimental/optional>
|
||
|
template
<
class
T
>
class optional ; |
(ライブラリ基盤 TS) | |
クラステンプレート
std::experimental::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
オブジェクトを比較する
(関数テンプレート) |
|
optional
オブジェクトを作成する
(関数テンプレート) |
|
|
std::swap
アルゴリズムを特殊化する
(関数) |
ヘルパークラス
|
std::hash
アルゴリズムを特殊化
(クラステンプレートの特殊化) |
|
|
(library fundamentals TS)
|
未初期化状態のoptional型の指示子
(クラス) |
|
(library fundamentals TS)
|
optional型のインプレース構築のための曖昧性回避タグ型
(クラス) |
|
(library fundamentals TS)
|
値を含まないoptionalへのチェック付きアクセスを示す例外
(クラス) |
ヘルパーオブジェクト
|
(library fundamentals TS)
|
nullopt_t
型のオブジェクト
(関数) |
|
(library fundamentals TS)
|
std::
experimental
::
in_place_t
型のオブジェクト
(関数) |