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
shared state
. A
future 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
a
future object
can be
set by
calling a respective function on an
object that shares the same
shared state
.