title: const <type>& foo() versus <type> foo()
body: <p>In a <strong><em>non-template</em></strong> class, is there any reason to prefer function return signatures in the form <code>const &lt;type&gt;&amp; foo();</code> versus <code>&lt;type&gt; foo();</code>? Where <code>&lt;type&gt;</code> is an intrinsic type. What about if <code>&lt;type&gt;</code> is a class/struct object? </p>
  
  <p>Also interested in whether or not the function being <em>const</em> makes a difference: <code>const &lt;type&gt;&amp; foo() const;</code> to <code>&lt;type&gt; foo() const;</code></p>
  
  <p>E.g. in a non-template class, non-template function: </p>
  
  <pre><code>const int&amp; foo() const { return member_variable_; }
  </code></pre>
  
  <p>Versus </p>
  
  <pre><code>int foo() const { return member_variable_; }
  </code></pre>