Boost logo

Boost Users :

Subject: [Boost-users] [Iterator]Can dereference() in iterator_adaptor return a temporary value?
From: Remi (therealremi_at_[hidden])
Date: 2011-07-30 13:42:57


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 )
            {}
        };



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net