Namespaces
Variants

std::experimental:: when_all

From cppreference.net
Definido en el encabezado <experimental/future>
template < class InputIt >

auto when_all ( InputIt first, InputIt last )

- > future < std:: vector < typename std:: iterator_traits < InputIt > :: value_type >> ;
(1) (concurrency TS)
template < class ... Futures >

auto when_all ( Futures && ... futures )

- > future < std:: tuple < std:: decay_t < Futures > ... >> ;
(2) (concurrency TS)

Cree un objeto future que esté listo cuando todas las future s y shared_future s de entrada estén listas. El comportamiento es indefinido si cualquier future o shared_future de entrada no es válido.

En particular, sea Sequence un std:: vector < typename std:: iterator_traits < InputIt > :: value_type > para (1) y std:: tuple < std:: decay_t < Futures > ... > para (2) . Esta plantilla de función crea un estado compartido que contiene Sequence y devuelve un futuro que hace referencia al estado compartido. Cada future de entrada se mueve al objeto correspondiente en la Sequence del estado compartido, y cada shared_future de entrada se copia al objeto correspondiente en la Sequence del estado compartido. El orden de los objetos en la Sequence coincide con el orden de los argumentos.

1) Esta función no participa en la resolución de sobrecarga a menos que InputIt 's tipo de valor (es decir, typename std:: iterator_traits < InputIt > :: value_type ) sea un std::experimental::future o un std::experimental::shared_future .
2) Esta función no participa en la resolución de sobrecarga a menos que cada argumento sea un std::experimental::shared_future (posiblemente calificado cv) o un std::experimental::future no calificado cv. (Formalmente, para cada tipo Fn en Futures , ya sea std:: remove_reference_t < Fn > es std:: experimental :: future < Rn > , o std:: decay_t < Fn > es std:: experimental :: shared_future < Rn > .)

Después de esta llamada, cada entrada future deja de ser válida; cada entrada shared_future permanece válida.

Valor de retorno

Un future que hace referencia al estado compartido creado por la llamada. El future siempre es valid ( ) , y se vuelve listo cuando todas las future s y shared_future s de entrada de la llamada están listas.

1) Si el rango está vacío (es decir, first == last ), el future devuelto contiene un vector vacío y está listo inmediatamente.
2) Si no se suministran argumentos, se devuelve un future<std::tuple<>> que está inmediatamente listo.