title: const forwarding reference gives error C2440: 'initializing': cannot convert from 'const std::string' to 'const std::string &&'
body: <p>The following gives a compiler error:</p>
  
  <pre><code>  #include &lt;string&gt;
  
    const std::string&amp; get_name();
  
    int main(){
      auto&amp;&amp; name1 = get_name();//should bind to whatever
      const auto&amp; name2 = get_name();//also ok
      const auto&amp;&amp; name3 = get_name();//&lt;-not ok, why ?
      return 0;
    }
  </code></pre>
  
  <p>Link to godbolt: <a href="https://godbolt.org/z/l6IQQ7" rel="nofollow noreferrer">https://godbolt.org/z/l6IQQ7</a></p>
  
  <p>If I use <code>const auto&amp;</code> it compiles - but that will not bind to value.
  <code>auto&amp;&amp;</code> will be bind to anything so that naturally works as well.
  However, what is the logic behind <code>const auto&amp;&amp;</code> not binding in this case ?
  I know <code>auto&amp;&amp;</code> will preserve the constness - but is there a way to be <code>const</code> explicit and at the same time be <em>reference/value agnostic</em> ?</p>
  
  <p><strong>Motivation:</strong></p>
  
  <p>For 'normal programming work' inside functions etc. it would be great to be able to say something like: <em>"I do not care if it's a value or reference - but I do not change it for the rest of the function"</em>.</p>
  
  <p>This should be possible given current language.</p>
  
  <p><strong>Related question:</strong> <a href="https://stackoverflow.com/questions/38814939/why-adding-const-makes-the-universal-reference-as-rvalue">Why adding `const` makes the universal reference as rvalue</a></p>