cpp/thread/future/~future

Releases any shared state. This means
 * if the current object holds the last reference to its shared state, the shared state is destroyed;
 * the current object gives up its reference to its shared state;

In practice, these actions will block only if the task’s launch policy is std (see "Effective Modern C++" Item 36), either because that was chosen by the runtime system or because it was specified in the call to std.