std::experimental::when_all
Min standard notice:
Header: <experimental/future>
Create a future object that becomes ready when all of the input futures and shared_futures become ready. The behavior is undefined if any input future or shared_future is invalid.
# Declarations
template< class InputIt >
auto when_all( InputIt first, InputIt last )
-> future<std::vector<typename std::iterator_traits<InputIt>::value_type>>;
(concurrency TS)
template< class... Futures >
auto when_all( Futures&&... futures )
-> future<std::tuple<std::decay_t<Futures>...>>;
(concurrency TS)
# Return value
A future referring to the shared state created by the call. The future is always valid(), and it becomes ready when all of the input futures and shared_futures the call are ready.