Requires:F and each Ti in Args shall satisfy the
MoveConstructible requirements.
INVOKE(​DECAY_ÂCOPY(​std​::​forward<F>(f)),
DECAY_ÂCOPY(​std​::​forward<Args>(​args))...) ([func.require]) shall be
a valid expression.
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.