title: Concise explanation of reference collapsing rules requested: (1) A& & -> A& , (2) A& && -> A& , (3) A&& & -> A& , and (4) A&& && -> A&&
body: <p>The following link provides the 4 forms of reference collapsing (if I'm correct that these are the only 4 forms): <a href="http://thbecker.net/articles/rvalue_references/section_08.html">http://thbecker.net/articles/rvalue_references/section_08.html</a>.</p>
  
  <p>From the link:</p>
  
  <blockquote>
    <ol>
    <li>A&amp; &amp; becomes A&amp;    </li>
    <li>A&amp; &amp;&amp; becomes A&amp;</li>
    <li>A&amp;&amp; &amp; becomes A&amp;</li>
    <li>A&amp;&amp; &amp;&amp; becomes A&amp;&amp;</li>
    </ol>
  </blockquote>
  
  <p>Although I can make an educated guess, I would like a concise explanation for the rationale behind each of these reference-collapsing rules.</p>
  
  <p>A related question, if I might: Are these reference-collapsing rules utilized <strong>in C++11</strong> internally by such STL utilities such as <code>std::move()</code>, <code>std::forward()</code>, and the like, in typical real-world use cases?  (Note: I'm specifically asking whether the reference-collapsing rules are utilized in C++11, as opposed to C++03 or earlier.)</p>
  
  <p>I ask this related question because I am aware of such C++11 utilities as <code>std::remove_reference</code>, but I do not know if the reference-related utilities such as <code>std::remove_reference</code> are routinely used in C++11 to <em>avoid need for</em> the reference-collapsing rules, or whether they are used <em>in conjunction with</em> the reference-collapsing rules.</p>