次のコードを検討してください。
class A {
class B {};
};
template <typename C>
class D : A::B {};
void f() {
D<int> d;
}
D<int>
A::B
ネストされたプライベート クラスを継承します。これはエラーだと思っていましたが、GCC はこのコードを受け入れます。それは GCC のバグですか、それとも何か不足していますか?
次のコードを検討してください。
class A {
class B {};
};
template <typename C>
class D : A::B {};
void f() {
D<int> d;
}
D<int>
A::B
ネストされたプライベート クラスを継承します。これはエラーだと思っていましたが、GCC はこのコードを受け入れます。それは GCC のバグですか、それとも何か不足していますか?
私は答えを見つけました。他の人にとって役立つかもしれないので、ここに投稿します - これは GCC バグ47346です。
非テンプレート派生クラスを作成しようとしましたか?
そのクラスのオブジェクトがない場合、テンプレート クラスはコンパイルされません。このクラスのインスタンスを作成するか、非テンプレート派生クラスを作成してみてください - gcc はおそらく失敗します ;-)
編集 私の悪い - オブジェクトが作成され、gcc エラーが発生していません。そのために残念。