10

考虑以下代码:

class A {
  class B {};
};

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

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

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

4

2 回答 2

7

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

于 2012-12-11T23:35:58.053 回答
2

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

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

编辑 我的错误 - 对象已创建并且它不会导致 gcc 错误。对此感到抱歉。

于 2012-12-11T23:18:03.463 回答