Je ne sais pas pourquoi ces codes ne peuvent pas être compilés. Je ai testé dans Visual C++ 2010 et gcc avec -std = C++ 0x. Quelqu'un a-t-il quelque suggestion? merci!Question à propos de la réduction de la référence 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;
}
Erreur de compilation: 'vide Foo :: test (T)': fonction membre déjà défini ou déclaré
mais pourquoi cela peut être compilé?
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 lire C++ 0x article dit: T & & == T &, donc const T & & == const T &?