0

我不确定为什么我在这条线上遇到错误。

我正在编译

$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]
4

1 回答 1

3

typenameintypename T不正确;typename仅用于从属名称。写:

typedef typename remove_pointer<T>::type &U;
于 2012-11-09T09:45:57.993 回答