考虑以下代码:
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
对这两种方法的调用同样危险?