The new thread of execution executes
INVOKE(DECAY_COPY(std::forward<F>(f)),
DECAY_COPY(std::forward<Args>(args))...) with the calls to
DECAY_COPY being evaluated in the constructing thread.
This implies that any exceptions not thrown from the invocation of the copy
of f will be thrown in the constructing thread, not the new thread.
—end note
]
If the
invocation of
INVOKE(DECAY_COPY(std::forward<F>(f)),
DECAY_COPY(std::forward<Args>(args))...)
terminates with an uncaught exception, terminate shall be called.
resource_unavailable_try_again — the system lacked the necessary
resources to create another thread, or the system-imposed limit on the number of
threads in a process would be exceeded.