The class template future
defines a type for asynchronous return objects which
do not share their shared state with other asynchronous return objects.
A default-constructed future
object has no
object with shared state can be created by
functions on asynchronous providers
or by the move constructor and shares its shared state with
the original asynchronous provider.
The result (value or exception) of
calling a respective function on an
object that shares the same