template <class T>
struct ABC
{
typedef typename T* pT;
};
int main(){}
上面的代码给出了错误
expected nested-name-specifier before 'T'
expected ';' before '*' token
代码示例有什么问题?
答案 0 :(得分:9)
关键字typename
在非限定名称(不在::
之前的名称)上被禁止,即使它们是相关的。
C ++ 03 [部分14.6/5
]说
关键字 typename只能应用于限定名称,但这些名称不必相关。
pt
依赖于T,但这无关紧要(在此上下文中)。
删除typename
以使代码编译。