Referenz kollabiert?

Durch den Versuch zu lösendieses Proble, etwas hat mich wundern lassen. Betrachten Sie den folgenden Code:

template <typename T>
struct foo 
{
    foo(T const& x) : data(x) {}
    T data;
};

Es scheint, dass ich ein Objekt vom Typ @ konstruieren kafoo<T const&> ohne Fehler, die hypothetischeT const& const& verstanden werden alsT const&.

Es scheint auch, dass dies @ genannt wireference collapsing, aber ich habe diesen Begriff noch nie gehört (siehe Kommentare in der verknüpften Frage).

Ist das weit verbreitet? Ist das Standard?