hpx/iterator_support/iterator_adaptor.hpp

See Public API for a list of names and headers that are part of the public HPX API.

namespace hpx
namespace util
template<typename Derived, typename Base, typename Value = void, typename Category = void, typename Reference = void, typename Difference = void, typename Pointer = void>
class iterator_adaptor : public hpx::util::iterator_facade<Derived, value_type, iterator_category, reference_type, difference_type, void>

Subclassed by hpx::util::counting_iterator< Incrementable, CategoryOrTraversal, Difference, std::enable_if_t< std::is_integral_v< Incrementable > > >

Public Types

template<>
using base_type = Base

Public Functions

iterator_adaptor()
constexpr iterator_adaptor(Base const &iter)
constexpr Base const &base() const

Protected Types

template<>
using base_adaptor_type = typename hpx::util::detail::iterator_adaptor_base<Derived, Base, Value, Category, Reference, Difference, Pointer>::type
typedef iterator_adaptor<Derived, Base, Value, Category, Reference, Difference, Pointer> iterator_adaptor_

Protected Functions

constexpr Base const &base_reference() const
Base &base_reference()

Private Functions

constexpr base_adaptor_type::reference dereference() const
template<typename OtherDerived, typename OtherIterator, typename V, typename C, typename R, typename D, typename P>
constexpr bool equal(iterator_adaptor<OtherDerived, OtherIterator, V, C, R, D, P> const &x) const
template<typename DifferenceType>
void advance(DifferenceType n)
void increment()
template<typename Iterator = Base, typename Enable = std::enable_if_t<traits::is_bidirectional_iterator_v<Iterator>>>
void decrement()
template<typename OtherDerived, typename OtherIterator, typename V, typename C, typename R, typename D, typename P>
constexpr base_adaptor_type::difference_type distance_to(iterator_adaptor<OtherDerived, OtherIterator, V, C, R, D, P> const &y) const

Private Members

Base iterator_

Friends

friend hpx::util::hpx::util::iterator_core_access