为什么模板化的派生类可以在gcc上访问其基本私有成员?

s.c*_*rck 9 c++ inheritance gcc templates private-members

我正在学习c ++.现在我明白派生类不能访问它的基类私有成员,但为什么一个模板化的人可以?

比如像这样的东西工作正常:

class base {
     static int x;
};
template<typename T>
class derived: public base{
    T t;
public:
    void setx(int i) {x=i;}
    int getx(){return x;}
};
Run Code Online (Sandbox Code Playgroud)

我在linux上使用gcc 5.4.

son*_*yao 12

这是GCC的一个已知错误,它似乎无法在模板中正确执行访问检查.见Bug 58740.

不幸的是,它仍然没有修复.

顺便说一下:Clang没能按预期编译.