diff options
Diffstat (limited to 'boost/geometry/iterators/closing_iterator.hpp')
-rw-r--r-- | boost/geometry/iterators/closing_iterator.hpp | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/boost/geometry/iterators/closing_iterator.hpp b/boost/geometry/iterators/closing_iterator.hpp index a0ec6a5c90..1477ea6e23 100644 --- a/boost/geometry/iterators/closing_iterator.hpp +++ b/boost/geometry/iterators/closing_iterator.hpp @@ -38,10 +38,24 @@ struct closing_iterator < closing_iterator<Range>, typename boost::range_value<Range>::type const, - boost::random_access_traversal_tag + boost::random_access_traversal_tag, + typename boost::range_reference<Range const>::type, + typename boost::range_difference<Range>::type > { - typedef typename boost::range_difference<Range>::type difference_type; +private: + typedef boost::iterator_facade + < + closing_iterator<Range>, + typename boost::range_value<Range>::type const, + boost::random_access_traversal_tag, + typename boost::range_reference<Range const>::type, + typename boost::range_difference<Range>::type + > base_type; + +public: + typedef typename base_type::reference reference; + typedef typename base_type::difference_type difference_type; /// Constructor including the range it is based on explicit inline closing_iterator(Range& range) @@ -71,7 +85,7 @@ struct closing_iterator private: friend class boost::iterator_core_access; - inline typename boost::range_value<Range>::type const& dereference() const + inline reference dereference() const { return *m_iterator; } |