Тип не найден при получении из базового класса шаблона

Мне трудно понять, почему в следующих двух частях кода есть разница, что именно делает компилятор.

У меня есть следующий фрагмент тривиального кода, который без проблем компилируется, как и ожидалось:

class base
{
public:
   typedef int booboo;
};

class derived : public base
{
public:
   int boo()
   {
      booboo bb = 1;
      return bb;
   }
};

int main()
{
   derived d;
   d.boo();
   return 0;
}

Я беру код сверху и добавляю некоторые параметры шаблона, и начинаю получать сообщения об ошибках типа booboo:

template 
class base
{
public:
   typedef T booboo;
};

template 
class derived : public base
{
public:
   //typedef typename base::booboo booboo; 

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

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