How can a function run "as if" on a new thread without doing so? : <p>Per [futures.async]/3 bullet 1 of the C++ Standard, when a function <code>f</code> is passed to <code>std::async</code> with the <code>std::launch::async</code> launch policy, <code>f</code> will run "as if in a new thread of execution". </p>

<p>Given that <code>f</code> can do anything, including loop infinitely and block forever, how can an implementation offer the behavior of <code>f</code> running on its own thread without actually running it on its own thread? That is, how can an implementation take advantage of the "as if" wiggle room the Standard provides?</p>
