title: Should I always use `T&&` instead of `const T&` or `T&` to bind to a callback function?
body: <pre><code>template &lt;typename T&gt;
  void myFunction(..., T &amp;&amp; callback) {
      ...
      callback(...);
      ...
  }
  </code></pre>
  
  <p>Is it preferable to use <code>T &amp;&amp;</code> than <code>T&amp;</code> or <code>const T&amp;</code>?</p>
  
  <p>Or even simply <code>T</code> to pass by value instead of pass by reference.</p>
  
  <p>Does function or lambdas have the concept of lvalue &amp; rvalue? Can I <code>std::move</code> a function / lambdas? </p>
  
  <p>Does <code>const</code> of <code>const T&amp;</code> enforce that the function cannot modify its closure? </p>