Namespaces
Variants

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

From cppreference.net
template < class ... Args >
void emplace ( Args && ... args ) ;
(库基础技术规范)
template < class U, class ... Args >
void emplace ( std:: initializer_list < U > ilist, Args && ... args ) ;
(库基础技术规范)

在适当位置构造所含值。若调用前 * 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 将不包含值(先前包含的值,如果存在,已被销毁)。

参见

赋值内容
(公开成员函数)