¿Colapso de referencia?
Al tratar de resolvereste problema, algo me hizo preguntarme. Considere el siguiente código:
template <typename T>
struct foo
{
foo(T const& x) : data(x) {}
T data;
};
Parece que puedo construir un objeto de tipofoo<T const&>
sin error, lo hipotéticoT const& const&
entendido comoT const&
.
Parece también que esto se llamacolapso de referencia, pero nunca escuché este término antes (ver comentarios en la pregunta vinculada).
¿Está esto extendido? ¿Es esto estándar?