【发布时间】:2013-05-31 20:13:27
【问题描述】:
令我惊讶的是,这个程序可以在 MSCV 和 GCC 中编译:
class A
{
public:
int add() { return 0; }
template<typename T>
T add() { return T(); }
};
int main() {
A a;
a.add();
a.add<int>();
return 0;
}
显然,由于无法推断模板化方法的类型,需要明确说明,因此情况并不模棱两可 - 仍然看起来有点阴暗 - 如果它是一个非模板化方法显然是不正确的。
我试过谷歌搜索并查看标准的最后草案,但找不到答案 - 模板方法和普通方法的命名相同,仅在 C++ 中的返回类型合法不同,或者是编译器只是被允许?
【问题讨论】: