これは簡単に見えますが、これを解決する良い考えがありません。最小限の例:
template<class T>
struct C {
typename T::t var;
};
class B;
struct A : public C<B> {
typedef int t;
};
struct B
{
A a;
};
int main() { return 0; }
CにBを少なくすることで解決できることを私は知っています:
template<class t>
struct C {
t var;
};
struct A : public C<int> {
};
しかし、これでは満足できません (特に、B には、C で本当に必要なそのような型定義と静的関数がたくさんあるため)。これを解決するためのより良いアイデアはありますか?