summaryrefslogtreecommitdiff
path: root/boost/histogram/axis/iterator.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/histogram/axis/iterator.hpp')
-rw-r--r--boost/histogram/axis/iterator.hpp33
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());
}
};