Hi, I'd like a const iterator that acts as a proxy by giving access to elements of type A as if they were elements of unrelated type B. In that case I guess the dereference() member function should return a temporary value, right?
Would that be a correct implementation of the idea? Here I just want to access an array of SourceVertexType as if it were an array of VertexType.
template<class VertexType>
class ConstVerticesIterator : public boost::iterator_adaptor< ConstVerticesIterator<VertexType>, const SourceVertexType*, const VertexType >
{
private:
friend class boost::iterator_core_access;
VertexType dereference() const
{
const SourceVertexType& source_vertex( *base() );
return VertexType( source_vertex.x, source_vertex.y );
}
public:
explicit ConstVerticesIterator( const SourceVertexType* vertices )
:
boost::iterator_adaptor< ConstVerticesIterator<VertexType>, const SourceVertexType*, const VertexType >( vertices )
{}
};