The class template 
shared_future defines a type for asynchronous return objects
which may share their shared state with other asynchronous return
objects
.A default-constructed 
shared_future
object has no shared state
.A 
shared_future object with
shared state can
be created
by conversion from a 
future object and shares its shared state with the
original asynchronous provider (
[futures.state]) of the shared state
.The result (value or exception) of a 
shared_future object
can be set by
calling a respective function on an
object that shares the same shared state
.