std::experimental:: when_any
|
ヘッダーで定義
<experimental/future>
|
||
|
template
<
class
Sequence
>
struct
when_any_result
{
|
(concurrency TS) | |
|
template
<
class
InputIt
>
auto
when_any
(
InputIt first, InputIt last
)
|
(1) | (concurrency TS) |
|
template
<
class
...
Futures
>
auto
when_any
(
Futures
&&
...
futures
)
|
(2) | (concurrency TS) |
入力された
future
および
shared_future
の少なくとも1つが準備完了状態になったときに準備完了となる
future
オブジェクトを作成します。入力された
future
または
shared_future
が無効な場合、動作は未定義です。
特に、
Sequence
を
std::
vector
<
typename
std::
iterator_traits
<
InputIt
>
::
value_type
>
とし、
(1)
ではこれを、
std::
tuple
<
std::
decay_t
<
Futures
>
...
>
とし、
(2)
ではこれを指す。この関数テンプレートは
when_any_result<Sequence>
を含む共有状態を作成し、その共有状態を参照するfutureを返す。各入力
future
は共有状態内の
when_any_result<Sequence>
の
futures
メンバ内の対応するオブジェクトに移動され、各入力
shared_future
は共有状態内の
when_any_result<Sequence>
の
futures
メンバ内の対応するオブジェクトにコピーされる。
Sequence
内のオブジェクトの順序は引数の順序と一致する。
InputIt
の値型(すなわち、
typename
std::
iterator_traits
<
InputIt
>
::
value_type
)が
std::experimental::future
または
std::experimental::shared_future
である場合。
Futures
内のすべての型
Fn
について、
std::
remove_reference_t
<
Fn
>
が
std::
experimental
::
future
<
Rn
>
であるか、または
std::
decay_t
<
Fn
>
が
std::
experimental
::
shared_future
<
Rn
>
であるかのいずれかです。)
この呼び出しの後、すべての入力
future
は無効になります。すべての入力
shared_future
は有効なままです。
戻り値
future
が参照する共有状態は、この呼び出しによって作成されます。このfutureは常に
valid
(
)
であり、入力された
future
および
shared_future
のうち少なくとも1つが準備完了状態になると、このfutureも準備完了状態になります。
when_any_result
の
index
メンバは、
futures
メンバ内で準備完了状態となった
future
または
shared_future
の位置を示します。
future
は即座に準備完了状態となる;
when_any_result
の
futures
フィールドは空のベクターであり、
index
フィールドは
size_t
(
-
1
)
となる。
future
は即座に準備完了状態となる;
when_any_result
の
futures
フィールドは空のタプルとなり、
index
フィールドは
size_t
(
-
1
)
となる。