What if you want to move some things, but copy others?<p>e.g.<p><pre><code>  auto shared = std::make_shared&lt;MySharedType&gt;(...);
  auto unique = std::make_unique&lt;MyOwnedType&gt;(...);

  function_that_accepts_lambda([shared, u = std::move(unique)] {
      shared-&gt;foo(...); u-&gt;bar(...);
  });

  &#x2F;&#x2F; Outer scope can still use shared.
  shared-&gt;foo(....);</code></pre>