ブースト反復子アダプターを使用して、CArray MFC クラスの単純な STL 反復子を作成しようとしています。これは私のコードです:
#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 でコンパイルしようとすると、次のエラーが発生します。
\include\boost\iterator\iterator_traits.hpp(49): エラー C2039: 'difference_type' : [ Iterator=int ] の 'boost::detail::iterator_traits< Iterator>' のメンバーではありません
\include\boost\mpl\eval_if.hpp(41) : [ Iterator=int ] でコンパイルされたクラス テンプレートのインスタンス化 'boost::iterator_difference' への参照を参照してください
....もう少し....
何が間違っている可能性がありますか?他のヘッダー ファイルをインクルードする必要がありますか? 私はライブラリをブーストするのはかなり新しいです。