我们说我有一个像这样的简单模板类:
template<class x> class TParent
{
public:
int Variable;
};
template<class x> class TChild : public TParent<x>
{
typedef TParent<x> SUPER;
public:
void Method() { Variable = 1; }; // *ERROR* needs to be SUPER::Variable = 1;
};
它适用于Microsoft编译器,但LLVM&amp; Clang不喜欢它,需要上面提到的改变。但它没有任何意义,如果类不是模板,它一切正常。有没有办法禁用这个荒谬的错误?
当然它很容易解决,对于较小的类是可以接受的,但如果模板是一个由数千行组成的庞大类,从父进程中一直访问成员,它就会产生代码非常丑陋,难以阅读。