remove_pointer + typename是错误的

时间:2012-11-09 07:38:14

标签: c++ gcc c++11

我不确定为什么我在这一行上收到错误。

我正在编译

$CPP -g -std=c++0x -Wall

$ CPP是g ++ - 4.7。我包括type_traits(C ++ 11,而不是boost)。这是否在4.7.2中不支持?

typedef typename remove_pointer<typename T>::type &U;

错误

file.h:222:44: error: template argument 1 is invalid
file.h:222:19: error: expected nested-name-specifier
file.h:222:47: error: typedef name may not be a nested-name-specifier
file.h:222:47: error: expected ‘;’ at end of member declaration
file.h:222:53: error: ISO C++ forbids declaration of ‘U’ with no type [-fpermissive]

1 个答案:

答案 0 :(得分:3)

typename中的typename T不正确; typename仅用于依赖名称。写:

typedef typename remove_pointer<T>::type &U;