[英]nested-name-specifier
我有一个代码:
namespace mymap {
template <class Key,template <typename T > class Allocator> myownmap {
typedef pair<const unsigned int, Key> typename _myPair;
typedef multimap<unsigned int, Key,less<Key> ,Allocator<_myPair> > typename _entriesType;
}
}
它在MSVC下成功编译(和工作),但是gcc抱怨语法无效:
.hpp:20: error: expected nested-name-specifier before ‘_myPair’
.hpp:20: error: two or more data types in declaration of ‘_myPair’
我做错了什么?
那里不需要typename
,因此不允许使用。
MSVC在实际使用之前不会正确解析模板,因此直到稍后才会发现某些错误。
“expected nested-name-specifier”意味着在typename
关键字之后,您应该使用模板参数的一些嵌套名称,例如typedef typename Key::iterator ...
在您的情况下,您不必使用typename
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.