不思議なことに繰り返されるテンプレート パターン クラスと次のような派生クラスがあります。
template<class Derived>
class A {
typedef typename Derived::C D;
D x;
};
class B : public A<B> {
public:
class C { };
};
これは、コンパイラが D を定義しようとしたときに B が完全に定義されていないため、コンパイルに失敗します。同様の結果を得るにはどうすればよいですか。つまり、B で定義された型の A のメンバを作成するにはどうすればよいですか? または、C を B の外で定義するように強制する必要がありますか?