Namespaces
Variants

std::experimental::future<T>:: future

From cppreference.net

future ( ) noexcept ;
(1)
future ( std:: experimental :: future < T > && f ) noexcept ;
(2)
future ( const std:: experimental :: future < T > & ) = delete ;
(3)
(4)
1) 默认构造函数。构造一个空的 future 对象,该对象不引用任何共享状态。
2) 构造一个 future 对象,转移 f 所持有的共享状态(如果存在)。构造完成后, f. valid ( ) false
3) 复制构造函数被删除。 future 不可复制。
4) 解包构造函数。从 other 所引用的共享状态(如果存在)构造一个 future 对象。如果在调用前 other. valid ( ) == false ,则构造的 future 对象为空。否则,当以下任一情况发生时,生成的 future 对象将变为就绪状态:
  • other other. get ( ) 均处于就绪状态。此时 other. get ( ) 的值或异常将存储在与生成的 future 对象关联的共享状态中。
  • other 已就绪,但 other. get ( ) 无效。此时会将一个错误条件为 std::future_errc::broken_promise std::future_error 类型异常存储在与生成的 future 对象关联的共享状态中。
此构造函数返回后, valid ( ) 的值等于调用前 other. valid ( ) 的值,且 other. valid ( ) == false


目录

参数

f - 用于初始化的另一个 future 对象
other - 要展开的 std::experimental::future 对象

示例

缺陷报告

下列行为变更缺陷报告被追溯应用于先前发布的 C++ 标准。

DR 适用范围 发布时的行为 正确行为
LWG 2697 Concurrency TS 解包构造函数在遇到无效 future 时的行为不明确 构造一个空的 future

参见

构造 future 对象
( std::future<T> 的公开成员函数)