title: When to return T&& from a non-template and non-member function
body: <p><em>Please note that there are previous answers concerning template functions or member functions but this question is only about non-template non-member functions. std::move() returns T&amp;&amp;, for example but it is a template function.</em></p>
  
  <p>Is there ever a good reason to use T&amp;&amp; as a return type from a non-template and non-member function, where T is any arbitrary type?</p>
  
  <p>For example when would you ever use the following?</p>
  
  <pre><code>T&amp;&amp; fn()
  {
  ....
  return ....
  }
  </code></pre>
  
  <p>I have seen examples where this is used but in all the examples, the developer misunderstood move semantics and should have returned by value and taken advantage of NRVO.</p>