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?