cpp/thread/promise/set value at thread exit

Stores the into the shared state without making the state ready immediately. The state is made ready when the current thread exits, after all variables with thread-local storage duration have been destroyed.

The operation behaves as though set_value, set_exception,, and set_exception_at_thread_exit acquire a single mutex associated with the promise object while updating the promise object.

An exception is thrown if there is no shared state or the shared state already stores a value or exception.

Calls to this function do not introduce data races with calls to get_future (therefore they need not synchronize with each other).

Return value
(none)

Exceptions
std on the following conditions:


 * has no shared state. The error code is set to.


 * The shared state already stores a value or exception. The error code is set to.

Additionally:

@1-2@ Any exception thrown by the copy constructor of @3@ Any exception thrown by the move constructor of