«Унаследованные» типы с использованием CRTP и typedef

Следующий код не компилируется. Я получаю сообщение об ошибке: ошибка C2039: «Asub»: не является членом «C»

Может ли кто-нибудь помочь мне понять это?

Пробовал VS2008 & 2010 компилятор.

template <class T>
class B
{
    typedef int Asub;

public:
 void DoSomething(typename T::Asub it)
 {

 }
};

class C : public B<C>
{
public:
 typedef int Asub;

};

class A
{
public:
 typedef int Asub;

};


int _tmain(int argc, _TCHAR* argv[])
{
 C theThing;
 theThing.DoSomething(C::Asub());

 return 0;
}

Ответы на вопрос(1)

Ваш ответ на вопрос