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