title: Move-only version of std::function
body: <p>Because <code>std::function</code> is copyable, the standard requires that callables used to construct it also be copyable:</p>
  <p>n337 (20.8.11.2.1)</p>
  <blockquote>
  <p><code>template&lt;class F&gt; function(F f);</code></p>
  <p>Requires: <code>F</code> shall be CopyConstructible. <code>f</code> shall be Callable (20.8.11.2) for argument types <code>ArgTypes</code> and return type <code>R</code>. The copy constructor and destructor of A shall not throw exceptions.`</p>
  </blockquote>
  <p>This implies that it is not possible to form an <code>std::function</code> from a non-copyable bind object or a lambda that captured a move-only type such as <code>std::unique_ptr</code>.</p>
  <p>It seems possible to implement such a move-only wrapper for move-only callables.  Is there a standard library move-only equivalent for <code>std::function</code> or, is there a common workaround for this problem?</p>