Search code examples
c++templatesgeneric-programming

nested-name-specifier


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?


Solution

  • 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.