Referência em colapso?
Ao tentar resolvereste problema, algo me fez pensar. Considere o seguinte código:
template <typename T>
struct foo
{
foo(T const& x) : data(x) {}
T data;
};
Parece que eu posso construir um objeto do tipofoo<T const&>
sem erro, o hipotéticoT const& const&
sendo entendido comoT const&
.
Parece também que isso é chamadocolapso de referência, mas nunca ouvi esse termo antes (veja os comentários na pergunta vinculada).
Isso é generalizado? Isso é padrão?