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
, который становится готовым, когда хотя бы один из входных
future
и
shared_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
перемещается в соответствующий объект в члене
futures
структуры
when_any_result<Sequence>
в общем состоянии, а каждый входной
shared_future
копируется в соответствующий объект в члене
futures
структуры
when_any_result<Sequence>
в общем состоянии. Порядок объектов в
Sequence
соответствует порядку аргументов.
InputIt
's тип значения (т.е.,
typename
std::
iterator_traits
<
InputIt
>
::
value_type
) не является
std::experimental::future
или
std::experimental::shared_future
.
Fn
в
Futures
, либо
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
становится готовым. Член
index
структуры
when_any_result
содержит позицию готового
future
или
shared_future
в члене
futures
.
future
готов немедленно; поле
futures
структуры
when_any_result
является пустым вектором, а поле
index
равно
size_t
(
-
1
)
.
future
готов немедленно; поле
futures
в
when_any_result
представляет собой пустой кортеж, а поле
index
равно
size_t
(
-
1
)
.