cpp/experimental/when all

Create a std object that becomes ready when all of the input s and stds become ready. The behavior is undefined if any input or  is invalid.

In particular, let be a  for  and  for. This function template creates a shared state containing and returns a future referring to the shared state. Every input is moved into the corresponding object in the  in the shared state, and every input  is copied to the corresponding object in the  in the shared state. The order of the objects in the matches the order of arguments.

@1@ This function does not participate in overload resolution unless 's value type (i.e., ) is a std or std. @2@ This function does not participate in overload resolution unless every argument is either a (possibly cv-qualified) std or a cv-unqualified std. (Formally, for every type in, either  is , or  is .)

After this call, every input is no longer valid; every input  remains valid.

Return value
A referring to the shared state created by the call. The future is always, and it becomes ready when all of the input s and s the call are ready.

@1@ If the range is empty (i.e., ), the returned contains an empty vector and is ready immediately. @2@ If there are no arguments supplied, a is returned and is immediately ready.