Namespaces
Variants

std::expected<T,E>:: emplace

From cppreference.net
Utilities library
主模板
template < class ... Args >
constexpr T & emplace ( Args && ... args ) noexcept ;
(1) (自 C++23 起)
template < class U, class ... Args >
constexpr T & emplace ( std:: initializer_list < U > il, Args && ... args ) noexcept ;
(2) (自 C++23 起)
void 部分特化
constexpr void emplace ( ) noexcept ;
(3) (自 C++23 起)

构造一个期望值的原位构造版本。调用后, has_value() 将返回 true。

1) 销毁所含值,随后使用 std:: forward < Args > ( args ) ... * this 中所含期望值进行 直接初始化
此重载仅当 std:: is_nothrow_constructible_v < T, Args... > true 时参与重载决议。
2) 销毁所含值,然后使用 il std:: forward < Args > ( args ) ... 直接初始化 * this 中包含的期望值。
此重载仅当 std:: is_nothrow_constructible_v < T, std:: initializer_list < U > & , Args... > true 时参与重载决议。
3) * this 包含意外值,则销毁该值。

目录

参数

args - 传递给构造函数的参数
il - 传递给构造函数的初始化列表

返回值

2) * std:: construct_at ( std:: addressof ( val ) , il, std:: forward < Args > ( args ) ... )

注释

如果 T 的构造可能抛出异常,可以使用 operator= 作为替代方案。

示例

参见

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