summaryrefslogtreecommitdiff
path: root/boost/geometry/iterators/closing_iterator.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/geometry/iterators/closing_iterator.hpp')
-rw-r--r--boost/geometry/iterators/closing_iterator.hpp20
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;
}