【发布时间】:2010-12-13 01:28:28
【问题描述】:
我不知道为什么这些代码无法编译。我已经在 Visual c++ 2010 和 gcc 中使用 -std=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;
}
编译错误:'void Foo::test(T)':成员函数已定义或声明
但是为什么可以编译呢?
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);
}
我看过 c++0x 的文章说:T& & ==T& ,所以 const T& & == const T& ?
【问题讨论】: