名前空間
変種
操作

std::optional<T>::emplace

提供: cppreference.com
< cpp‎ | utility‎ | optional
 
 
 
 
template< class... Args >
T& emplace( Args&&... args );
(C++17以上)
template< class U, class... Args >
T& emplace( std::initializer_list<U> ilist, Args&&... args );
(C++17以上)

格納される値をその場で構築します。 *this が呼び出し前にすでに値を格納している場合、その格納されている値はそのデストラクタを呼ぶことによって破棄されます。

1) std::forward<Args>(args)... を引数として用いる直接初期化 (しかし直接リスト初期化ではない) によって、格納される値を初期化します。
2) ilist, std::forward<Args>(args)... を引数として用いてコンストラクタを呼ぶことによって、格納される値を初期化します。 このオーバーロードは、std::is_constructible<T, std::initializer_list<U>&, Args&&...>::valuetrue である場合にのみ、オーバーロード解決に参加します。

目次

[編集] 引数

args... - コンストラクタに渡す引数
ilist - コンストラクタに渡す初期化子リスト
型の要件
-
オーバーロード (1) の場合、 TArgs... から構築可能でなければなりません。
-
オーバーロード (2) の場合、 Tstd::initializer_list および Args... から構築可能でなければなりません。

[編集] 戻り値

新たに格納された値を指す参照。

[編集] 例外

選択された T のコンストラクタによって投げられるあらゆる例外。 例外が投げられた場合、この呼び出しの後、 *this は値を格納していない状態になります (以前に格納されていた値があれば、それは破棄されます)。

[編集] 関連項目

内容を代入します
(パブリックメンバ関数) [edit]