std::experimental:: when_any
Defined in header
<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) |
Create a
future
object that becomes ready when at least one of the input
future
s and
shared_future
s become ready. The behavior is undefined if any input
future
or
shared_future
is invalid.
In particular, let
Sequence
be a
std::
vector
<
typename
std::
iterator_traits
<
InputIt
>
::
value_type
>
for
(1)
and
std::
tuple
<
std::
decay_t
<
Futures
>
...
>
for
(2)
. This function template creates a shared state containing
when_any_result<Sequence>
and returns a future referring to the shared state. Every input
future
is moved into the corresponding object in the
futures
member of the
when_any_result<Sequence>
in the shared state, and every input
shared_future
is copied to the corresponding object in the
futures
member of the
when_any_result<Sequence>
in the shared state. The order of the objects in the
Sequence
matches the order of arguments.
InputIt
's value type (i.e.,
typename
std::
iterator_traits
<
InputIt
>
::
value_type
) is a
std::experimental::future
or
std::experimental::shared_future
.
Fn
in
Futures
, either
std::
remove_reference_t
<
Fn
>
is
std::
experimental
::
future
<
Rn
>
, or
std::
decay_t
<
Fn
>
is
std::
experimental
::
shared_future
<
Rn
>
.)
After this call, every input
future
is no longer valid; every input
shared_future
remains valid.
Return value
A
future
referring to the shared state created by the call. The future is always
valid
(
)
, and it becomes ready when at least one of the input
future
s and
shared_future
s the call are ready. The
index
member of the
when_any_result
contains the position of the ready
future
or
shared_future
in the
futures
member.
future
is ready immediately; the
futures
field of the
when_any_result
is an empty vector, and the
index
field is
size_t
(
-
1
)
.
future
is ready immediately; the
futures
field of the
when_any_result
is an empty tuple, and the
index
field is
size_t
(
-
1
)
.