0

この行でエラーが発生する理由がわかりません。

私はコンパイルしています

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

$CPPはg++-4.7です。type_traits(C ++ 11、ブーストではありません)を含めています。これは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 に答える