std :: pair ожидает тип, но я даю ему тип - PullRequest
3 голосов
/ 23 сентября 2010

Это мой код:

typedef std::hash_multimap<Vertice<VerticeType, WeightType>*, Edge<VerticeType, WeightType>*> ght;
std::pair<ght::iterator, ght::iterator> getEdgesFromVertice(Vertice<VerticeType, WeightType>*);

Когда я пытаюсь его скомпилировать, выдает ошибку:

error: type/value mismatch at argument 1 in template parameter list for ‘template<class _T1, class _T2> struct std::pair’
error:   expected a type, got ‘__gnu_cxx::hash_multimap::iterator’

Но это не так, std :: hash_multimap:: итератор типа?Все примеры, которые я видел в Интернете, используют одинаковые обозначения для типа возврата std::hash_multimap<T1, T2>::equal_range(key)

. Любая помощь приветствуется.Спасибо:)

1 Ответ

14 голосов
/ 23 сентября 2010

Это выглядит как в шаблоне, а VerticeType и т. Д. Являются параметрами шаблона. В этом случае вам не хватает typename:

std::pair<typename ght::iterator, typename ght::iterator> ...

Предполагается, что зависимые имена не являются типами имен , если не используется typename.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...