Почему следующее не компилируется?Доступ к typedef для детей из шаблонизированного родителя
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, и это работает отлично.
Я пробовал оба GCC 4.4.2 и clang 3.0.
Возможный дубликат [статический полиморфизм C++ (CRTP) и использование typedefs из производных классов] (http://stackoverflow.com/questions/6006614/c-static-polymorphism-crtp-and-using-typedefs-from-derived -классов) – thirtythreeforty