简单模板代码中的错误

New*_*low 5 c++ templates typedef typename

template <class T>
struct ABC
{
      typedef typename T* pT;     
};

int main(){}
Run Code Online (Sandbox Code Playgroud)

上面的代码给出了错误

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

代码示例有什么问题?

Pra*_*rav 9

关键字typename在非限定名称(不在其前面的名称)上被禁止::,即使它们是相关的.

C++ 03 [部分14.6/5]说

关键字typename只能应用于限定名称,但这些名称不必相关.

pt 依赖于T,但这无关紧要(在此上下文中).

删除typename以使您的代码编译.