我不确定为什么我在这一行上收到错误。
我正在编译
$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]
答案 0 :(得分:3)
typename
中的typename T
不正确; typename
仅用于依赖名称。写:
typedef typename remove_pointer<T>::type &U;