1. ホーム
  2. c++

[解決済み] ネストされた名前指定子

2022-02-24 14:39:50

質問

次のようなコードがあります。

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は実際に使用されるまでテンプレートを正しく解析しないので、いくつかのエラーは後になってから発見されます。