テンプレート化されたクラスで循環依存の問題が発生しました。コードサンプルがあります:
template <typename T> struct A
{
typedef typename T::C D;
//typename T::C c;
};
struct B : public A<B>
{
struct C {};
};
B をインスタンス化しようとすると、コンパイラ エラーが発生します。「C」は「B」のメンバーではありません(MSVC) または 不完全な型「構造体 B」の使用が無効です (GCC)。
サンプルを機能させるために変更する最良の方法は何ですか?