令我惊讶的这个节目在这两个MSCV和GCC编译:方法名称相同,C++模板方法名称++
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;
}
显然,由于该模板方法的类型不能被推断,需要要明确说明,所以情况并非模糊不清 - 但它似乎有点阴暗 - 如果它是一种非模板化的方法,显然是不正确的。
我试过Google搜索并查看了标准的最后草稿,但找不到答案 - 是模板方法和普通方法的相同命名,它们仅在C++中与返回类型合法不同,或者是编译器只是宽容吗?
哇,后者更有趣 - 将记住这一点,谢谢! –