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
는 계속 유효합니다.
반환값
호출에 의해 생성된 공유 상태를 참조하는
future
. 이 future는 항상
valid
(
)
상태이며, 호출에 사용된 모든 입력
future
와
shared_future
가 준비 상태가 되면 준비 상태가 됩니다.
future
는 빈 벡터를 포함하며 즉시 준비 상태가 됩니다.
future<std::tuple<>>
가 반환되며 즉시 준비 상태가 됩니다.