title: Why can't std::function bind to C-style variadic functions?
body: <p>For example, this fails to compile:</p>
  
  <p><code>std::function&lt;decltype(printf)&gt; my_printf(printf);</code></p>
  
  <p>With gcc, the error message reads:</p>
  
  <pre><code>error: variable 'std::function&lt;int(const char*, ...)&gt; my_printf' has initializer but incomplete type
       std::function&lt;decltype(printf)&gt; my_printf(printf);
  </code></pre>
  
  <p>At first I thought this was a bug in gcc, but then I looked at the standard and it looks like this just isn't supported. What's the technical reason for this?</p>