title: std::async won't spawn a new thread when return value is not stored
body: <p>Consider I have lamba <code>foo</code> which just does some stuff and doesn't need to return anything.
  When I do this:   </p>
  
  <pre><code>std::future&lt;T&gt; handle = std::async(std::launch::async, foo, arg1, arg2);
  </code></pre>
  
  <p>Everything runs fine and the lamba will be spawned in a new thread.
  However, when I don't store the <code>std::future</code> which the <code>std::async</code> returns, the foo will be run in the main thread and block it.</p>
  
  <pre><code>std::async(std::launch::async, foo, arg1, arg2);
  </code></pre>
  
  <p>What am I missing here?</p>