以下がコンパイルされないのはなぜですか?
template <typename Child> struct Base
{
typename Child::Type t; // Does not compile. "No type named Type in Child"
};
struct Derived : public Base<Derived>
{
typedef int Type;
};
どうしてBase
その子のタイプにアクセスできないのですか?typedefの代わりに静的関数で同じことを試しましたが、それは問題なく機能します。
GCC4.4.2とclang3.0の両方を試しました。