Попробовал определить в итераторе указанные в ошибках типы.
class iterator
{
public:
typedef iterator iterator_category;
typedef int value_type;
typedef int difference_type;
typedef int* pointer;
typedef int& reference;
iterator(){}
bool operator == (const iterator &it){return true;}
bool operator != (const iterator &it){return false;}
iterator & operator ++(){return *this;}
int operator *(){return 0;}
};
Получил одну ошибку:
Error 1 error C2665: 'std::_Debug_range2' : none of the 2 overloads could convert all the argument types c:\program files\microsoft visual studio 9.0\vc\include\xutility 1572
"Ни одна из перегруженных функций не может преобразовать все типы аргумента"
Иду по ошибке
template<class _InIt> inline
void __CLRCALL_OR_CDECL _Debug_range(_InIt _First, _InIt _Last, const wchar_t *_File, unsigned int _Line)
{ // test iterator pair for valid range
_Debug_range2(_First, _Last, _File, _Line, _Iter_cat(_First)); // <--------- УКАЗЫВАЕТ, ЧТО ТУТ ОШИБКА
}
Лезу в функцию _Debug_range2:
template<class _InIt> inline
void __CLRCALL_OR_CDECL _Debug_range2(_InIt, _InIt, const wchar_t *, unsigned int ,
input_iterator_tag)
{ // test iterator pair for valid range, arbitrary iterators
}
В общем залез в какие-то дебри... На юниксах вроде как всё нормально работает, а тут такая петрушка