令我驚訝的這個節目在這兩個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++中與返回類型合法不同,或者是編譯器只是寬容嗎?
哇,後者更有趣 - 將記住這一點,謝謝! –