No sé por qué no se puede compilar este código. He probado en Visual C++ 2010 y gcc con -std = C++ 0x. Alguien da alguna sugerencia? gracias!Pregunta sobre el colapso de referencia de C++ 0x
template<typename T>
class Foo
{
public:
void test(const T&){cout<<"const";}
void test( T&){cout<<"non const";}
};
int main()
{
int a;
Foo<int&> f;
}
error de compilación: 'vacío Foo :: prueba (T)': función miembro ya definido o se declara
pero ¿por qué esto puede ser compilado?
template<typename T> void foo(const T&){cout<<"const"; }
template<typename T> void foo(T&){cout<<"non const"; }
int main()
{
int a;
foo<int&>(a);
}
i'v leer C++ 0x artículo dijo: T & & == T &, por lo que T const & & == T const &?