std::experimental:: when_all
|
定義済みヘッダ
<experimental/future>
|
||
|
template
<
class
InputIt
>
auto
when_all
(
InputIt first, InputIt last
)
|
(1) | (concurrency TS) |
|
template
<
class
...
Futures
>
auto
when_all
(
Futures
&&
...
futures
)
|
(2) | (concurrency TS) |
入力されたすべての
future
および
shared_future
が準備完了状態になったときに準備完了となる
future
オブジェクトを作成します。入力された
future
または
shared_future
が無効な場合、動作は未定義です。
特に、
Sequence
を
std::
vector
<
typename
std::
iterator_traits
<
InputIt
>
::
value_type
>
とし(
(1)
の場合)、
std::
tuple
<
std::
decay_t
<
Futures
>
...
>
とし(
(2)
の場合)。この関数テンプレートは
Sequence
を含む共有状態を作成し、その共有状態を参照するfutureを返します。各入力
future
は共有状態内の
Sequence
の対応するオブジェクトへ移動され、各入力
shared_future
は共有状態内の
Sequence
の対応するオブジェクトへコピーされます。
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
は有効なままです。
戻り値
A
future
が参照する共有状態は、この呼び出しによって作成されます。このfutureは常に
valid
(
)
であり、呼び出しのすべての入力
future
と
shared_future
が準備完了状態になると、このfutureも準備完了状態になります。
future
は空のベクターを含み、即座に準備完了状態になります。
future<std::tuple<>>
が返され、即座に準備完了状態となります。