名前空間
変種
操作

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

From cppreference.com
 
 
 
 
 
template< class... Args >
void emplace( Args&&... args );
(Library Fundamentals TS)
template< class U, class... Args >
void emplace( std::initializer_list<U> ilist, Args&&... args );
(Library Fundamentals TS)

保持している値をインプレースで構築します。呼び出し前に*thisが既に値を保持している場合、保持されている値はデストラクタを呼び出して破棄されます。

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

目次

[編集] パラメータ

args... - コンストラクタに渡す引数
ilist - コンストラクタに渡す初期化リスト
型要件
-
TArgs... から構築可能でなければなりません。
-
Tstd::initializer_listArgs... から構築可能でなければなりません。

[編集] 戻り値

(なし)

[編集] 例外

選択された T のコンストラクタによってスローされる例外。

例外がスローされた場合、この呼び出し後、*thisは値を保持しません(以前に保持していた値があれば、それは破棄されています)。

[編集] 関連項目

内容を代入する
(public member function) [編集]
English 日本語 中文(简体) 中文(繁體)