Namespaces
Variants

std::experimental::optional<T>:: emplace

From cppreference.net
template < class ... Args >
void emplace ( Args && ... args ) ;
(ライブラリ基盤仕様 TS)
template < class U, class ... Args >
void emplace ( std:: initializer_list < U > ilist, Args && ... args ) ;
(ライブラリ基盤仕様 TS)

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

1) 含まれる値を 直接初期化 (ただし直接リスト初期化ではない)によって、 std:: forward < Args > ( args ) ... をパラメータとして初期化します。
2) 含まれる値を、そのコンストラクタを ilist, std:: forward < Args > ( args ) ... をパラメータとして呼び出すことで初期化します。このオーバーロードは、 std:: is_constructible < T, std:: initializer_list < U > & , Args && ... > :: value true の場合にのみ、オーバーロード解決に参加します。

目次

パラメータ

args... - コンストラクタに渡す引数
ilist - コンストラクタに渡す初期化子リスト
型要件
-
T Args... から構築可能でなければならない
-
T std::initializer_list Args... から構築可能でなければならない

戻り値

(なし)

例外

T の選択されたコンストラクタによってスローされるあらゆる例外。例外がスローされた場合、 * this はこの呼び出し後に値を保持しません(以前に保持されていた値がある場合は破棄されています)。

関連項目

内容を代入
(公開メンバ関数)