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) f が保持する共有状態(もしあれば)と同じ共有状態を参照するshared futureを構築します。
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> のpublicメンバ関数)