考虑下面的代码:从A::B
为什么GCC允许从私有嵌套类继承?
class A {
class B {};
};
template <typename C>
class D : A::B {};
void f() {
D<int> d;
}
D<int>
继承其是私有的嵌套类。我期待这是一个错误,但GCC接受这个代码。这是GCC中的错误还是我错过了一些东西?
考虑下面的代码:从A::B
为什么GCC允许从私有嵌套类继承?
class A {
class B {};
};
template <typename C>
class D : A::B {};
void f() {
D<int> d;
}
D<int>
继承其是私有的嵌套类。我期待这是一个错误,但GCC接受这个代码。这是GCC中的错误还是我错过了一些东西?
您是否尝试创建非模板派生类?
如果没有该类的对象,则不会编译模板类。试试这个类来创建实例或创建非模板派生类 - 海湾合作委员会可能会失败;-)
编辑 我的坏 - 对象被创建,它不会造成GCC错误。对不起。
他确实创建了一个实例。在'f()'... – StoryTeller
好吧,对。 我检查了一下,它的工作原理是:| 我不明白,真的:) – Yester
看起来像一个错误,因为删除模板声明导致预期的错误。 – StoryTeller
MSVC引发错误。 –
Visual Studio 2012不想编译该代码。 – Yester