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_futures become ready. The behavior is undefined if any input future
or shared_future
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
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
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)