std::experimental:: when_all
|
Défini dans l'en-tête
<experimental/future>
|
||
|
template
<
class
InputIt
>
auto
when_all
(
InputIt first, InputIt last
)
|
(1) | (concurrency TS) |
|
template
<
class
...
Futures
>
auto
when_all
(
Futures
&&
...
futures
)
|
(2) | (concurrency TS) |
Créez un objet
future
qui devient prêt lorsque toutes les
future
s et
shared_future
s d'entrée sont prêtes. 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
Sequence
et retourne un futur référençant cet état partagé. Chaque
future
d'entrée est déplacé dans l'objet correspondant de la
Sequence
dans l'état partagé, et chaque
shared_future
d'entrée est copié dans l'objet correspondant de la
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
valide
(
)
, et il devient prêt lorsque tous les
future
s et
shared_future
s d'entrée de l'appel sont prêts.
future
retourné contient un vecteur vide et est prêt immédiatement.
future<std::tuple<>>
est retourné et est immédiatement prêt.