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

来自cppreference.com
< cpp‎ | utility‎ | expected
 
 
工具库
通用工具
日期和时间
函数对象
格式化库 (C++20)
(C++11)
关系运算符 (C++20 中弃用)
整数比较函数
(C++20)(C++20)(C++20)
(C++20)
swap 与类型运算
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
常用词汇类型
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
初等字符串转换
(C++17)
(C++17)
 
 
T 不是 cv void
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 起)
T 是 cv void
constexpr void emplace() noexcept;
(3) (C++23 起)

在原地构造一个期望值。调用后,has_value() 返回 true。

1) 销毁包含的值,然后初始化 *this 中包含的期望值,就像用参数 std::forward<Args>(args)... 直接初始化 构造 T 类型的对象一样。此重载只有在std::is_nothrow_constructible_v<T, Args...> 为真 时才会参与重载决议。
2) 销毁包含的值,然后初始化 *this 中包含的期望值,就像用参数 il, std::forward<Args>(args)... 直接初始化 构造 T 类型的对象一样。 此重载只有在std::is_nothrow_constructible_v<T, std::initializer_list<U>&, Args...> 为真 时才会参与重载决议。
3) 如果 *this 包含一个非期望值,销毁该值。

参数

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

返回值

对新包含的值的引用。

异常

noexcept 说明:  
noexcept
  

注解

如果 T 的构造函数是潜在抛出的,则此函数未定义。在这种情况下,用户有责任创建一个临时对象并移动或复制它。

示例

参阅

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