Я пытаюсь скомпилировать следующий код в Linux с помощью gcc 4.2:
#include <map>
#include <list>
template<typename T>
class A
{
...
private:
std::map<const T, std::list<std::pair<T, long int> >::iterator> lookup_map_;
std::list<std::pair<T, long int> > order_list_;
};
Когда я компилирую этот класс, я получаю следующее сообщение из gcc:
error: type/value mismatch at argument 2 in template parameter list for ‘template<class _Key, class _Tp, class _Compare, class _Alloc> class std::map’
error: expected a type, got ‘std::list<std::pair<const T, long int>,std::allocator<std::pair<const T, long int> > >::iterator’
error: template argument 4 is invalid
Я удалил имена файлов и номера строк, но все они относятся к строке, объявляющей карту.
Когда я заменяю пару в этих выражениях на int или какой-то конкретный тип, он компилируется отлично. Может кто-нибудь, пожалуйста, объясните мне, что я делаю неправильно.