简单模板代码中的错误

时间:2010-10-16 07:04:42

标签: c++ templates typedef typename

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

int main(){}

上面的代码给出了错误

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

代码示例有什么问题?

1 个答案:

答案 0 :(得分:9)

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

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

  

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

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

删除typename以使代码编译。