The new thread of execution executes
invoke(auto(std::forward<F>(f)), get_stop_token(), // for invoke, see [func.invoke]auto(std::forward<Args>(args))...)
if that expression is well-formed,
otherwise
invoke(auto(std::forward<F>(f)), auto(std::forward<Args>(args))...)
with the values produced by auto
being materialized ([conv.rval]) in the constructing thread.
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.
Effects: If &x ==this is true, there are no effects.
Otherwise, if joinable() is true,
calls request_stop() and then join(),
then assigns the state of x to *this
and sets x to a default constructed state.