Effects: The new thread of execution executes
invoke(auto(std::forward<F>(f)), // for invoke, see [func.invoke]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.