title: How to bind async?
body: <p>I've tried the following with VS, g++ and Clang and couldn't make rhyme or reason of any of the errors spewed out.</p>
  
  <pre><code>void foo() {}
  
  auto f = bind(async, foo);
  </code></pre>
  
  <p>I suspect the errors may stem from the confusion on which async() to bind to, the one that takes a launch policy versus the one that doesn't... Or I have to explicitly give async() its template types (e.g. async&lt;...>)? Either way, what's the proper way to write the statement above?</p>
  
  <p><strong>Edit:</strong></p>
  
  <p>Thanks for your suggestions guys, but none of the following works (with any compiler):</p>
  
  <pre><code>bind(async&lt;decltype(foo)&gt;, foo);
  
  bind(async&lt;void (*)()&gt;, foo);
  
  bind(async&lt;function&lt;void ()&gt; &gt;, foo);
  </code></pre>