title: unique_ptr, you're referencing a deleted function
body: <p>I'm attempting to move a <code>unique_ptr</code> to the <code>WriteAsync</code> method. This works as expected. The issue I'm having is now moving ownership of the unique pointer into the <code>strand.post</code> lambda, and then, moving it again, into <code>QueueMessage</code>.
  <code>QueueMessage</code> takes a <code>std::unique_ptr&lt;std::vector&lt;char&gt;&gt;</code>.</p>
  
  <p>The easy way for me in this case would be to just use a <code>shared_ptr</code>. I'm wondering if there is a way to make this work without the use of a <code>shared_ptr</code>.</p>
  
  <pre><code>// Caller
  static void DoWork( char const* p, int len  )
  {
       client.WriteAsync( std::make_unique&lt;std::vector&lt;char&gt;&gt;( p, p + len ) );
  }
  
  // Callee
  void TcpClient::WriteAsync( std::unique_ptr&lt;std::vector&lt;char&gt;&gt; buffer )
  {
      _strand.post( [ this, buffer = std::move( buffer ) ]( ) 
      { 
          // Error on this line.
          QueueMessage( std::move( buffer ) ); 
      } );
  }
  
  
  void TcpClient::QueueMessage( std::unique_ptr&lt;std::vector&lt;char&gt;&gt; buffer )
  {
       // Do stuff
  }
  </code></pre>
  
  <p>The error I'm seeing is:</p>
  
  <blockquote>
    <p>you're referencing a deleted function</p>
  </blockquote>