Namespaces
Variants

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

来自 zh.cppreference.net
 
 
 
 
主模板
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) 销毁所含值,然后直接初始化*this中包含的期望值为std::forward<Args>(args)...。
仅当std::is_nothrow_constructible_v<T, Args...>为true时,此重载参与重载决议。
2) 销毁所含值,然后直接初始化*this中包含的期望值为il和std::forward<Args>(args)...。
仅当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= 作为替代方案。

示例

参见

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