Reference collapsing?
<p>By trying to solve <a href="http://stackoverflow.com/questions/3769781/stdpair-of-references">this problem</a>, something made me wonder. Consider the following code:</p>

<pre><code>template &lt;typename T&gt;
struct foo 
{
    foo(T const&amp; x) : data(x) {}
    T data;
};
</code></pre>

<p>It seems that I can construct an object of type <code>foo&lt;T const&amp;&gt;</code> without error, the hypothetical <code>T const&amp; const&amp;</code> being understood as <code>T const&amp;</code>.</p>

<p>It seems also that this is called <em>reference collapsing</em>, but I never heard this term before (see comments in the linked question).</p>

<p>Is this widespread ? Is this standard ?</p>
