为什么GCC允许从私有嵌套类继承?

时间:2012-12-11 23:14:18

标签: c++ gcc g++ nested-class private-members

请考虑以下代码:

class A {
  class B {};
};

template <typename C>
class D : A::B {};

void f() {
  D<int> d;
}

D<int>继承自A::B,它是一个私有嵌套类。我原以为这是一个错误,但GCC接受这个代码。这是GCC中的一个错误还是我错过了什么?

2 个答案:

答案 0 :(得分:7)

我找到了答案。因为它可能对其他人有用,我在这里发布 - 这是GCC bug 47346

答案 1 :(得分:2)

您是否尝试创建非模板派生类?

如果没有该类的对象,则不编译模板类。尝试创建此类的实例或创建非模板派生类 - gcc可能会失败; - )

修改 我的坏 - 创建对象并且它不会导致gcc错误。对不起。