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?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage