Ошибки в простом коде шаблона - PullRequest
5 голосов
/ 16 октября 2010
template <class T>
struct ABC
{
      typedef typename T* pT;     
};

int main(){}

Приведенный выше фрагмент кода выдает ошибки

expected nested-name-specifier before 'T'
expected ';' before '*' token

Что не так с примером кода?

1 Ответ

9 голосов
/ 16 октября 2010

Ключевое слово typename запрещено для неквалифицированных имен (которым не предшествует ::), даже если они зависимы.

C ++ 03 [Раздел 14.6/5] говорит

Ключевое слово typename должно применяться только к квалифицированным именам , но эти имена не должны зависеть.

pt зависит от T, но это не имеет значения (в этом контексте).

Удалите typename, чтобы ваш код компилировался.

...