У меня есть пользовательский шаблонный класс итератора, который оборачивает std::list
итератор. В моем методе hasNext()
я хочу проверить, ссылается ли итератор на последний элемент в списке. Однако этот код:
template< class Type >
...
virtual bool hasNext( void )
{
return itTypes != pList->back();
}
...
typename std::list< Type > * pList;
typename std::list< Type >::iterator itTypes;
выдает ошибку:
error C2678: binary '!=' : no operator found which takes a left-hand operand of type 'std::_List_iterator<_Mylist>'
Если я сравню itTypes
с list::begin()
или list::end()
, у меня нет проблем. В документации, которую я просматривал для итераторов STL, говорится, что двунаправленные итераторы, используемые std :: list, поддерживают операторы сравнения равенства и неравенства. Есть ли причина, которую я не могу сравнить с list::back()
тогда?