Namespaces
Variants

std::experimental::shared_future<T>:: shared_future

From cppreference.net

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

目录

参数

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

示例

缺陷报告

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

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

参见

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