我有一个模板类MyClass
template <class T>
class MyClass
{
public:
MyClass() { }
private:
void PrivateFunction() {
std::cout << "Message From Private Function" << std::endl;
}
};
现在当我试图在另一个函数中使用PrivateFunction()时,编译器会报错,但是当我在模板函数中尝试相同的操作时,编译器不会显示任何错误。
Compiler doesn't report error.
template <class T> void f() { MyClass<int> a; a.PrivateFunction(); }
Compiler reports error.
void f() { MyClass<int> a; a.PrivateFunction(); }
f()
了吗? - billzf
从未实例化,clang 对于 1 和 2 都会显示错误。 - user743382f()
模板实例化,因此该模板是不良形式的,无需诊断。编译器是否在模板定义时间或实例化时间诊断错误是实现质量问题。 - T.C.