diff options
Diffstat (limited to 'boost/histogram/axis/iterator.hpp')
-rw-r--r-- | boost/histogram/axis/iterator.hpp | 33 |
1 files changed, 12 insertions, 21 deletions
diff --git a/boost/histogram/axis/iterator.hpp b/boost/histogram/axis/iterator.hpp index 29b8ee0091..8b8c15e392 100644 --- a/boost/histogram/axis/iterator.hpp +++ b/boost/histogram/axis/iterator.hpp @@ -8,34 +8,25 @@ #define BOOST_HISTOGRAM_AXIS_ITERATOR_HPP #include <boost/histogram/axis/interval_view.hpp> -#include <boost/histogram/detail/meta.hpp> -#include <boost/iterator/iterator_adaptor.hpp> -#include <boost/iterator/reverse_iterator.hpp> +#include <boost/histogram/detail/iterator_adaptor.hpp> +#include <iterator> namespace boost { namespace histogram { namespace axis { -template <typename Axis> -class iterator - : public boost::iterator_adaptor<iterator<Axis>, int, - decltype(std::declval<const Axis&>().bin(0)), - std::random_access_iterator_tag, - decltype(std::declval<const Axis&>().bin(0)), int> { +template <class Axis> +class iterator : public detail::iterator_adaptor<iterator<Axis>, int, + decltype(std::declval<Axis>().bin(0))> { public: - explicit iterator(const Axis& axis, int idx) - : iterator::iterator_adaptor_(idx), axis_(axis) {} + /// Make iterator from axis and index. + iterator(const Axis& axis, int idx) : iterator::iterator_adaptor_(idx), axis_(axis) {} -protected: - bool equal(const iterator& other) const noexcept { - return &axis_ == &other.axis_ && this->base() == other.base(); - } - - decltype(auto) dereference() const { return axis_.bin(this->base()); } + /// Return current bin object. + decltype(auto) operator*() const { return axis_.bin(this->base()); } private: const Axis& axis_; - friend class boost::iterator_core_access; }; /// Uses CRTP to inject iterator logic into Derived. @@ -43,7 +34,7 @@ template <typename Derived> class iterator_mixin { public: using const_iterator = iterator<Derived>; - using const_reverse_iterator = boost::reverse_iterator<const_iterator>; + using const_reverse_iterator = std::reverse_iterator<const_iterator>; /// Bin iterator to beginning of the axis (read-only). const_iterator begin() const noexcept { @@ -58,12 +49,12 @@ public: /// Reverse bin iterator to the last entry of the axis (read-only). const_reverse_iterator rbegin() const noexcept { - return boost::make_reverse_iterator(end()); + return std::make_reverse_iterator(end()); } /// Reverse bin iterator to the end (read-only). const_reverse_iterator rend() const noexcept { - return boost::make_reverse_iterator(begin()); + return std::make_reverse_iterator(begin()); } }; |