次のコードを検討してください。
template <typename T>
class C2 {
public:
T method() { }
int method2() { }
};
でコンパイルするとg++ -Wall -c -pedantic
、次の警告が表示されます。
test.cpp: In member function ‘int C2<T>::method2()’:
test.cpp:4:29: warning: no return statement in function returning non-void [-Wreturn-type]
これは予想されます。奇妙なことに、それmethod()
も何も返さないということです。C2
でインスタンス化T = int
すると両方のメソッドの呼び出しが等しく危険になるため、警告が生成されないのはなぜですか?