hpx/iterator_support/iterator_facade.hpp

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

Defines

HPX_UTIL_ITERATOR_FACADE_INTEROP_HEAD(prefix, op, result_type)
HPX_UTIL_ITERATOR_FACADE_INTEROP_HEAD_EX(prefix, op, result_type, cond)
namespace hpx
namespace util

Functions

template<typename Derived, typename T, typename Category, typename Reference, typename Distance, typename Pointer>
util::detail::postfix_increment_result_t<Derived, typename Derived::value_type, typename Derived::reference> operator++(iterator_facade<Derived, T, Category, Reference, Distance, Pointer> &i, int)
hpx::util::HPX_UTIL_ITERATOR_FACADE_INTEROP_HEAD(inline constexpr, bool)
hpx::util::HPX_UTIL_ITERATOR_FACADE_INTEROP_HEAD(inline constexpr, !, bool)
hpx::util::HPX_UTIL_ITERATOR_FACADE_INTEROP_HEAD_EX(inline constexpr)
hpx::util::HPX_UTIL_ITERATOR_FACADE_INTEROP_HEAD_EX(inline constexpr, bool, detail::enable_random_access_operations)
hpx::util::HPX_UTIL_ITERATOR_FACADE_INTEROP_HEAD_EX(inline constexpr, <=, bool, detail::enable_random_access_operations)
hpx::util::HPX_UTIL_ITERATOR_FACADE_INTEROP_HEAD_EX(inline constexpr, >=, bool, detail::enable_random_access_operations)
hpx::util::HPX_UTIL_ITERATOR_FACADE_INTEROP_HEAD_EX(inline constexpr, -, typename std::iterator_traits< Derived2 >::difference_type, detail::enable_random_access_operations)
template<typename Derived, typename T, typename Category, typename Reference, typename Distance, typename Pointer>
constexpr std::enable_if_t<std::is_same_v<typename Derived::iterator_category, std::random_access_iterator_tag>, Derived> operator+(iterator_facade<Derived, T, Category, Reference, Distance, Pointer> const &it, typename Derived::difference_type n)
template<typename Derived, typename T, typename Category, typename Reference, typename Distance, typename Pointer>
constexpr std::enable_if_t<std::is_same_v<typename Derived::iterator_category, std::random_access_iterator_tag>, Derived> operator+(typename Derived::difference_type n, iterator_facade<Derived, T, Category, Reference, Distance, Pointer> const &it)
class iterator_core_access

Public Static Functions

template<typename Iterator1, typename Iterator2>
static constexpr bool equal(Iterator1 const &lhs, Iterator2 const &rhs)
template<typename Iterator>
static constexpr void increment(Iterator &it)
template<typename Iterator>
static constexpr void decrement(Iterator &it)
template<typename Reference, typename Iterator>
static constexpr Reference dereference(Iterator const &it)
template<typename Iterator, typename Distance>
static constexpr void advance(Iterator &it, Distance n)
template<typename Iterator1, typename Iterator2>
static constexpr std::iterator_traits<Iterator1>::difference_type distance_to(Iterator1 const &lhs, Iterator2 const &rhs)
template<typename Derived, typename T, typename Category, typename Reference = T&, typename Distance = std::ptrdiff_t, typename Pointer = void>
struct iterator_facade : public hpx::util::detail::iterator_facade_base<Derived, T, Category, T&, std::ptrdiff_t, void>

Subclassed by hpx::util::iterator_adaptor< Derived, Base, Value, Category, Reference, Difference, Pointer >

Public Types

template<>
using iterator_category = typename base_type::iterator_category
template<>
using value_type = typename base_type::value_type
template<>
using difference_type = typename base_type::difference_type
template<>
using pointer = typename base_type::pointer
template<>
using reference = typename base_type::reference

Public Functions

iterator_facade()

Protected Types

template<>
using iterator_adaptor_ = iterator_facade<Derived, T, Category, Reference, Distance, Pointer>

Private Types

template<>
using base_type = detail::iterator_facade_base<Derived, T, Category, Reference, Distance, Pointer>