title: use std::bind in lambda with std::unique_ptr
body: <pre><code>// By const l-value reference
  auto func2 = std::bind([](const std::unique_ptr&lt; std::vector&lt;int&gt; &gt;&amp; pw) // fine
  {
      std::cout &lt;&lt; "size of vector2: " &lt;&lt; pw-&gt;size() &lt;&lt; std::endl;
  }, std::make_unique&lt;std::vector&lt;int&gt;&gt;(22, 1));
  
  //By non-const l-value reference
  auto func3 = std::bind([](std::unique_ptr&lt; std::vector&lt;int&gt; &gt;&amp; pw) // fine
  {
      std::cout &lt;&lt; "size of vector3: " &lt;&lt; pw-&gt;size() &lt;&lt; std::endl;
  }, std::make_unique&lt;std::vector&lt;int&gt;&gt;(22, 1));
  
  // By Value
  auto func4 = std::bind([](std::unique_ptr&lt; std::vector&lt;int&gt; &gt; pw) // error
  {
      std::cout &lt;&lt; "size of vector4: " &lt;&lt; pw-&gt;size() &lt;&lt; std::endl;
  }, std::make_unique&lt;std::vector&lt;int&gt;&gt;(22, 1));
  func4(); // without this line, compilation is fine. The VS generates error for the calling of the bind object.
  // By r-value reference
  auto func5 = std::bind([](std::unique_ptr&lt; std::vector&lt;int&gt; &gt;&amp;&amp; pw) // error
  {
      std::cout &lt;&lt; "size of vector5: " &lt;&lt; pw-&gt;size() &lt;&lt; std::endl;
  }, std::make_unique&lt;std::vector&lt;int&gt;&gt;(22, 1));
  func5(); // without this line, compilation is fine.
  </code></pre>
  
  <p>Why func4 and func5 fail to compile?</p>