I have a code like:
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;
}
}
It compiles successfully (and works) under MSVC, but gcc is complaining about invalid syntax:
.hpp:20: error: expected nested-name-specifier before ‘_myPair’
.hpp:20: error: two or more data types in declaration of ‘_myPair’
what i'm doing wrong?
The typename
is not needed there, and is therefore not allowed.
MSVC do not parse templates properly until they are actually used, so some errors are not found until later.