title: std::bind and rvalue reference
body: <p>Let's consider the following piece of code:</p>
  
  <pre><code>class Widget{
  };
  
  int main(){
  Widget w;
  auto lambda = bind([](Widget&amp;&amp; ref){ return; }, std::move(w));
  
  return 0;
  }
  </code></pre>
  
  <p>and it triggers error </p>
  
  <pre class="lang-none prettyprint-override"><code>no match for call to ‘(std::_Bind&lt;main()::&lt;lambda(Widget&amp;&amp;)&gt;(Widget)&gt;) ()’
       lambda();
  </code></pre>
  
  <p>And my question is: Why the error has appeared? After all, I do an explicit cast to rvalue reference – I mean <code>std::move(w)</code> and I take argument by rvalue reference – I mean <code>Widget&amp;&amp; ref</code>.</p>
  
  <p>What's up?</p>
  
  <p>Moreover the the below code works, what makes me worried the more:</p>
  
  <pre><code>class Widget{
  };
  
  int main(){
  Widget w;
  auto lambda = bind([](Widget&amp; ref){ return; }, std::move(w));
  
  return 0;
  }
  </code></pre>