std::experimental:: when_any
|
Défini dans l'en-tête
<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) |
Créez un objet
future
qui devient prêt lorsqu'au moins une des
future
s et
shared_future
s d'entrée devient prête. Le comportement est indéfini si une
future
ou
shared_future
d'entrée est invalide.
En particulier, soit
Sequence
un
std::
vector
<
typename
std::
iterator_traits
<
InputIt
>
::
value_type
>
pour
(1)
et
std::
tuple
<
std::
decay_t
<
Futures
>
...
>
pour
(2)
. Ce modèle de fonction crée un état partagé contenant
when_any_result<Sequence>
et retourne un futur référençant cet état partagé. Chaque
future
d'entrée est déplacé dans l'objet correspondant du membre
futures
du
when_any_result<Sequence>
dans l'état partagé, et chaque
shared_future
d'entrée est copié dans l'objet correspondant du membre
futures
du
when_any_result<Sequence>
dans l'état partagé. L'ordre des objets dans la
Sequence
correspond à l'ordre des arguments.
InputIt
's value type (c'est-à-dire,
typename
std::
iterator_traits
<
InputIt
>
::
value_type
) est un
std::experimental::future
ou un
std::experimental::shared_future
.
Fn
dans
Futures
, soit
std::
remove_reference_t
<
Fn
>
est
std::
experimental
::
future
<
Rn
>
, soit
std::
decay_t
<
Fn
>
est
std::
experimental
::
shared_future
<
Rn
>
.)
Après cet appel, chaque
future
d'entrée n'est plus valide ; chaque
shared_future
d'entrée reste valide.
Valeur de retour
Un
future
faisant référence à l'état partagé créé par l'appel. Le futur est toujours
valid
(
)
, et il devient prêt lorsqu'au moins un des
future
s ou
shared_future
s en entrée de l'appel est prêt. Le membre
index
du
when_any_result
contient la position du
future
ou du
shared_future
prêt dans le membre
futures
.
future
retourné est immédiatement prêt ; le champ
futures
du
when_any_result
est un vecteur vide, et le champ
index
est
size_t
(
-
1
)
.
future
retourné est prêt immédiatement ; le champ
futures
du
when_any_result
est un tuple vide, et le champ
index
est
size_t
(
-
1
)
.