10

次のコードを検討してください。

class A {
  class B {};
};

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

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

D<int>A::Bネストされたプライベート クラスを継承します。これはエラーだと思っていましたが、GCC はこのコードを受け入れます。それは GCC のバグですか、それとも何か不足していますか?

4

2 に答える 2

7

私は答えを見つけました。他の人にとって役立つかもしれないので、ここに投稿します - これは GCC バグ47346です。

于 2012-12-11T23:35:58.053 に答える
2

非テンプレート派生クラスを作成しようとしましたか?

そのクラスのオブジェクトがない場合、テンプレート クラスはコンパイルされません。このクラスのインスタンスを作成するか、非テンプレート派生クラスを作成してみてください - gcc はおそらく失敗します ;-)

編集 私の悪い - オブジェクトが作成され、gcc エラーが発生していません。そのために残念。

于 2012-12-11T23:18:03.463 に答える