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
중 적어도 하나가 준비 상태가 될 때 준비되는
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
중 적어도 하나가 준비 상태가 되면 준비 상태가 됩니다.
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
)
입니다.