考虑以下代码:
class A {
class B {};
};
template <typename C>
class D : A::B {};
void f() {
D<int> d;
}
D<int>
继承自A::B
which 是一个私有嵌套类。我原以为这是一个错误,但 GCC 接受此代码。这是 GCC 中的错误还是我遗漏了什么?
考虑以下代码:
class A {
class B {};
};
template <typename C>
class D : A::B {};
void f() {
D<int> d;
}
D<int>
继承自A::B
which 是一个私有嵌套类。我原以为这是一个错误,但 GCC 接受此代码。这是 GCC 中的错误还是我遗漏了什么?
我找到了答案。因为它可能对其他人有用,所以我在这里发布 - 这是 GCC bug 47346。
您是否尝试创建非模板派生类?
如果没有该类的对象,则不会编译模板类。尝试创建此类的实例或创建非模板派生类 - gcc 可能会失败;-)
编辑 我的错误 - 对象已创建并且它不会导致 gcc 错误。对此感到抱歉。