Namespaces
Variants

std::experimental:: when_all

From cppreference.net
Definiert in Header <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)

Erstellen Sie ein future -Objekt, das bereit wird, wenn alle Eingabe- future s und shared_future s bereit werden. Das Verhalten ist undefiniert, falls eine Eingabe- future oder shared_future ungültig ist.

Insbesondere sei Sequence ein std:: vector < typename std:: iterator_traits < InputIt > :: value_type > für (1) und std:: tuple < std:: decay_t < Futures > ... > für (2) . Diese Funktionsvorlage erzeugt einen gemeinsamen Zustand, der Sequence enthält, und gibt ein Future zurück, das auf diesen gemeinsamen Zustand verweist. Jedes Eingabe- future wird in das entsprechende Objekt in der Sequence im gemeinsamen Zustand verschoben, und jedes Eingabe- shared_future wird in das entsprechende Objekt in der Sequence im gemeinsamen Zustand kopiert. Die Reihenfolge der Objekte in der Sequence entspricht der Reihenfolge der Argumente.

1) Diese Funktion nimmt nicht an der Überladungsauflösung teil, es sei denn InputIt 's Werttyp (d.h. typename std:: iterator_traits < InputIt > :: value_type ) ist ein std::experimental::future oder std::experimental::shared_future .
2) Diese Funktion nimmt nicht an der Überladungsauflösung teil, es sei denn, jedes Argument ist entweder ein (möglicherweise cv-qualifizierter) std::experimental::shared_future oder ein nicht cv-qualifizierter std::experimental::future . (Formal gilt: Für jeden Typ Fn in Futures ist entweder std:: remove_reference_t < Fn > ein std:: experimental :: future < Rn > , oder std:: decay_t < Fn > ist ein std:: experimental :: shared_future < Rn > .)

Nach diesem Aufruf ist jedes Eingabe- future nicht mehr gültig; jedes Eingabe- shared_future bleibt gültig.

Rückgabewert

Ein future , der auf den durch den Aufruf erstellten gemeinsamen Zustand verweist. Der future ist immer valid ( ) und wird bereit, wenn alle Eingabe- future s und shared_future s des Aufrufs bereit sind.

1) Wenn der Bereich leer ist (d.h., first == last ), enthält das zurückgegebene future einen leeren Vektor und ist sofort bereit.
2) Wenn keine Argumente angegeben werden, wird ein future<std::tuple<>> zurückgegeben und ist sofort bereit.