名前空間
変種
操作

std::optional<T>::emplace

提供: cppreference.com
< cpp‎ | utility‎ | optional
 
 
ユーティリティライブラリ
汎用ユーティリティ
日付と時間
関数オブジェクト
書式化ライブラリ (C++20)
(C++11)
関係演算子 (C++20で非推奨)
整数比較関数
(C++20)
スワップと型操作
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
一般的な語彙の型
(C++11)
(C++17)
(C++17)
(C++17)
(C++17)

初等文字列変換
(C++17)
(C++17)
 
 
template< class... Args >
T& emplace( Args&&... args );
(1) (C++17以上)
template< class U, class... Args >
T& emplace( std::initializer_list<U> ilist, Args&&... args );
(2) (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]