Я пытаюсь написать простой итератор STL для класса CArray MFC, используя адаптер итератора boost. Это мой код:
#include <boost/iterator/iterator_adaptor.hpp>
#include <afxtempl.h>
class CArrIter : public boost::iterator_adaptor< CArrIter ,
int,
int,
boost::random_access_traversal_tag >
{
public:
CArrIter(CArray<int,int>& arr, int index = 0) : m_arr(arr)
{
this->base_reference() = index;
}
private:
friend class boost::iterator_core_access;
int dereference() const{
return m_arr.GetAt(base());
}
private:
CArray<int,int>& m_arr;
};
Прекрасно компилируется с компилятором VC9. Но когда я пытаюсь скомпилировать это с VC7, я получаю следующую ошибку:
\ включить \ импульс \ итератора \ iterator_traits.hpp (49)
: erro r C2039: 'Разность_типов': есть
не является членом
«Повышение :: детали :: iterator_traits <
Итератор>»
с
[
Итератор = INT
]
\ include \ boost \ mpl \ eval_if.hpp (41):
см. ссылку на шаблон класса
конкретизации
'Повышение :: iterator_difference'
скомпилировано
с
[
Итератор = INT
]
.... Еще немного ....
Любые подсказки, что может быть не так? Я должен включить некоторые другие заголовочные файлы? Я новичок в улучшении библиотеки.