<分区>
我偶然发现了 g++ (6.2.1) 编译器的一个行为,我没有异常(exception)。似乎在某些情况下,当未使用错误的函数定义时,g++ 会忽略模板类中的错误。
让我们举个例子:
class A
{
bool _var;
public:
void myFunc() const
{
_var = true;
}
};
int main()
{
A a;
return 0;
}
编译器返回以下错误:
error: assignment of member 'A::_var' in read-only object
这是我所期望的。现在让我们制作类模板:
template <typename MyType>
class A
{
bool _var;
public:
void myFunc() const
{
_var = true;
}
};
int main()
{
A<int> a;
return 0;
}
即使我们试图在 const 方法中为成员变量赋值,这也能正常编译。 然后,如果我尝试使用 myFunc 函数,编译器将再次看到错误并拒绝编译。
为什么会这样?编译器不应该能够在每种情况下都看到错误吗?
谢谢!