iterator_support¶
See Public API for a list of names and headers that are part of the public HPX API.
Defines
-
HPX_ITERATOR_TRAVERSAL_TAG_NS
¶
-
namespace
hpx
-
namespace
iterators
¶ -
struct
bidirectional_traversal_tag
: public hpx::iterators::forward_traversal_tag¶ Subclassed by hpx::iterators::random_access_traversal_tag
-
struct
forward_traversal_tag
: public hpx::iterators::single_pass_traversal_tag¶ Subclassed by hpx::iterators::bidirectional_traversal_tag
-
struct
incrementable_traversal_tag
: public hpx::iterators::no_traversal_tag¶ Subclassed by hpx::iterators::single_pass_traversal_tag
-
struct
no_traversal_tag
¶ Subclassed by hpx::iterators::incrementable_traversal_tag
-
struct
single_pass_traversal_tag
: public hpx::iterators::incrementable_traversal_tag¶ Subclassed by hpx::iterators::forward_traversal_tag
-
struct
-
namespace
traits
Typedefs
-
template<typename
Traversal
>
usingpure_traversal_tag
= HPX_ITERATOR_TRAVERSAL_TAG_NS::iterators::pure_traversal_tag<Traversal>¶
-
template<typename
Traversal
>
usingpure_traversal_tag_t
= typename pure_traversal_tag<Traversal>::type¶
-
template<typename
Iterator
>
usingpure_iterator_traversal
= HPX_ITERATOR_TRAVERSAL_TAG_NS::iterators::pure_iterator_traversal<Iterator>¶
-
template<typename
Iterator
>
usingpure_iterator_traversal_t
= typename pure_iterator_traversal<Iterator>::type¶
-
template<typename
Cat
>
usingiterator_category_to_traversal
= HPX_ITERATOR_TRAVERSAL_TAG_NS::iterators::iterator_category_to_traversal<Cat>¶
-
template<typename
Cat
>
usingiterator_category_to_traversal_t
= typename iterator_category_to_traversal<Cat>::type¶
-
template<typename
Iterator
>
usingiterator_traversal
= HPX_ITERATOR_TRAVERSAL_TAG_NS::iterators::iterator_traversal<Iterator>¶
-
template<typename
Iterator
>
usingiterator_traversal_t
= typename iterator_traversal<Iterator>::type¶
Variables
-
template<typename
Traversal
>
constexpr boolpure_traversal_tag_v
= pure_traversal_tag<Traversal>::value¶
-
template<typename
Iterator
>
constexpr boolpure_iterator_traversal_v
= pure_iterator_traversal<Iterator>::value¶
-
template<typename
Cat
>
constexpr booliterator_category_to_traversal_v
= iterator_category_to_traversal<Cat>::value¶
-
template<typename
Iterator
>
constexpr booliterator_traversal_v
= iterator_traversal<Iterator>::value¶
-
template<typename
-
namespace
-
template<typename
Incrementable
, typenameCategoryOrTraversal
, typenameDifference
>
classcounting_iterator
<Incrementable, CategoryOrTraversal, Difference, std::enable_if_t<std::is_integral_v<Incrementable>>> : public hpx::util::iterator_adaptor<counting_iterator<Incrementable, CategoryOrTraversal, Difference>, Incrementable, Incrementable, traversal, Incrementable const&, difference>¶ Public Functions
-
counting_iterator
()¶
-
counting_iterator
(counting_iterator &&rhs)¶
-
counting_iterator &
operator=
(counting_iterator &&rhs)¶
-
counting_iterator
(counting_iterator const &rhs)¶
-
counting_iterator &
operator=
(counting_iterator const &rhs)¶
-
constexpr
counting_iterator
(Incrementable x)¶
Private Types
-
template<>
usingbase_type
= typename detail::counting_iterator_base<Incrementable, CategoryOrTraversal, Difference>::type¶
Private Functions
-
void
increment
()¶
-
void
decrement
()¶
-
constexpr base_type::reference
dereference
() const¶
-
template<typename
OtherIncrementable
>
base_type::difference_typedistance_to
(counting_iterator<OtherIncrementable, CategoryOrTraversal, Difference> const &y) const¶
Friends
-
friend
iterator_core_access
-
-
namespace
hpx
-
namespace
util
Functions
-
template<typename
Incrementable
>
constexpr counting_iterator<Incrementable>make_counting_iterator
(Incrementable x)¶
-
template<typename
Incrementable
, typenameCategoryOrTraversal
, typenameDifference
, typenameEnable
>
classcounting_iterator
¶ Public Functions
-
counting_iterator
()
-
counting_iterator
(counting_iterator &&rhs)
-
counting_iterator &
operator=
(counting_iterator &&rhs)
-
counting_iterator
(counting_iterator const &rhs)
-
counting_iterator &
operator=
(counting_iterator const &rhs)
-
constexpr
counting_iterator
(Incrementable x)
Private Types
-
template<>
usingbase_type
= typename detail::counting_iterator_base<Incrementable, CategoryOrTraversal, Difference>::type¶
Private Functions
-
constexpr base_type::reference
dereference
() const
Friends
-
friend
hpx::util::iterator_core_access
-
-
template<typename
Incrementable
, typenameCategoryOrTraversal
, typenameDifference
>
classcounting_iterator
<Incrementable, CategoryOrTraversal, Difference, std::enable_if_t<std::is_integral_v<Incrementable>>> : public hpx::util::iterator_adaptor<counting_iterator<Incrementable, CategoryOrTraversal, Difference>, Incrementable, Incrementable, traversal, Incrementable const&, difference> Public Functions
-
counting_iterator
()
-
counting_iterator
(counting_iterator &&rhs)
-
counting_iterator &
operator=
(counting_iterator &&rhs)
-
counting_iterator
(counting_iterator const &rhs)
-
counting_iterator &
operator=
(counting_iterator const &rhs)
-
constexpr
counting_iterator
(Incrementable x)
Private Types
-
template<>
usingbase_type
= typename detail::counting_iterator_base<Incrementable, CategoryOrTraversal, Difference>::type
Private Functions
-
template<typename
Iterator
>
constexpr boolequal
(Iterator const &rhs) const
-
void
increment
()
-
void
decrement
()
-
template<typename
Distance
>
voidadvance
(Distance n)
-
constexpr base_type::reference
dereference
() const
-
template<typename
OtherIncrementable
>
base_type::difference_typedistance_to
(counting_iterator<OtherIncrementable, CategoryOrTraversal, Difference> const &y) const
Friends
-
friend
hpx::util::iterator_core_access
-
-
template<typename
-
namespace
-
namespace
hpx
-
namespace
util
Functions
-
template<typename
Generator
>
classgenerator_iterator
: public hpx::util::iterator_facade<generator_iterator<Generator>, Generator::result_type, std::forward_iterator_tag, Generator::result_type const&> Public Functions
-
generator_iterator
()¶
-
generator_iterator
(Generator *g)¶
-
void
increment
()¶
-
Generator::result_type const &
dereference
() const¶
-
bool
equal
(generator_iterator const &y) const¶
Private Types
-
-
template<typename
-
namespace
-
namespace
hpx
-
namespace
util
-
template<typename
Derived
, typenameBase
, typenameValue
= void, typenameCategory
= void, typenameReference
= void, typenameDifference
= void, typenamePointer
= void>
classiterator_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<>
usingbase_type
= Base¶
Public Functions
-
iterator_adaptor
()¶
-
constexpr
iterator_adaptor
(Base const &iter)¶
-
constexpr Base const &
base
() const¶
Protected Types
-
template<>
usingbase_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_
¶
Private Functions
-
constexpr base_adaptor_type::reference
dereference
() const¶
-
template<typename
OtherDerived
, typenameOtherIterator
, typenameV
, typenameC
, typenameR
, typenameD
, typenameP
>
constexpr boolequal
(iterator_adaptor<OtherDerived, OtherIterator, V, C, R, D, P> const &x) const¶
-
template<typename
DifferenceType
>
voidadvance
(DifferenceType n)¶
-
void
increment
()¶
-
template<typename
Iterator
= Base, typenameEnable
= std::enable_if_t<traits::is_bidirectional_iterator_v<Iterator>>>
voiddecrement
()¶
-
template<typename
OtherDerived
, typenameOtherIterator
, typenameV
, typenameC
, typenameR
, typenameD
, typenameP
>
constexpr base_adaptor_type::difference_typedistance_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
-
template<>
-
template<typename
-
namespace
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
, typenameT
, typenameCategory
, typenameReference
, typenameDistance
, typenamePointer
>
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
, typenameT
, typenameCategory
, typenameReference
, typenameDistance
, typenamePointer
>
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
, typenameT
, typenameCategory
, typenameReference
, typenameDistance
, typenamePointer
>
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
, typenameIterator2
>
static constexpr boolequal
(Iterator1 const &lhs, Iterator2 const &rhs)¶
-
template<typename
Reference
, typenameIterator
>
static constexpr Referencedereference
(Iterator const &it)¶
-
template<typename
-
template<typename
Derived
, typenameT
, typenameCategory
, typenameReference
= T&, typenameDistance
= std::ptrdiff_t, typenamePointer
= void>
structiterator_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
Public Functions
-
iterator_facade
()¶
Protected Types
-
template<>
usingiterator_adaptor_
= iterator_facade<Derived, T, Category, Reference, Distance, Pointer>¶
Private Types
-
template<>
usingbase_type
= detail::iterator_facade_base<Derived, T, Category, Reference, Distance, Pointer>¶
-
-
template<typename
-
namespace
-
namespace
hpx
-
namespace
ranges
-
namespace
util
Functions
-
template<typename
Range
, typenameIterator
= traits::range_iterator_t<Range>, typenameSentinel
= traits::range_iterator_t<Range>>
constexpr std::enable_if_t<traits::is_range_v<Range>, iterator_range<Iterator, Sentinel>>make_iterator_range
(Range &r)¶
-
template<typename
Range
, typenameIterator
= traits::range_iterator_t<Range const>, typenameSentinel
= traits::range_iterator_t<Range const>>
constexpr std::enable_if_t<traits::is_range_v<Range>, iterator_range<Iterator, Sentinel>>make_iterator_range
(Range const &r)¶
-
template<typename
-
namespace
-
namespace
hpx
-
namespace
util
-
namespace
range_adl
¶ Functions
-
template<typename
C
, typenameIterator
= typename detail::iterator<C>::type>
constexpr Iteratorbegin
(C &c)¶
-
template<typename
C
, typenameIterator
= typename detail::iterator<C const>::type>
constexpr Iteratorbegin
(C const &c)¶
-
template<typename
C
, typenameSentinel
= typename detail::sentinel<C>::type>
constexpr Sentinelend
(C &c)¶
-
template<typename
C
, typenameSentinel
= typename detail::sentinel<C const>::type>
constexpr Sentinelend
(C const &c)¶
-
template<typename
-
namespace
-
namespace
-
namespace
hpx
-
namespace
util
Functions
-
template<typename
Transformer
, typenameIterator
>
transform_iterator<Iterator, Transformer>make_transform_iterator
(Iterator const &it, Transformer const &f)¶
-
template<typename
Transformer
, typenameIterator
>
transform_iterator<Iterator, Transformer>make_transform_iterator
(Iterator const &it)¶
-
template<typename
Iterator
, typenameTransformer
, typenameReference
, typenameValue
, typenameCategory
, typenameDifference
>
classtransform_iterator
¶ Public Functions
-
transform_iterator
()¶
-
transform_iterator
(Iterator const &it)¶
-
transform_iterator
(Iterator const &it, Transformer const &f)¶
-
template<typename
OtherIterator
, typenameOtherTransformer
, typenameOtherReference
, typenameOtherValue
, typenameOtherCategory
, typenameOtherDifference
>transform_iterator
(transform_iterator<OtherIterator, OtherTransformer, OtherReference, OtherValue, OtherCategory, OtherDifference> const &t, typename std::enable_if<std::is_convertible<OtherIterator, Iterator>::value && std::is_convertible<OtherTransformer, Transformer>::value && std::is_convertible<OtherCategory, Category>::value && std::is_convertible<OtherDifference, Difference>::value>::type* = nullptr)¶
-
Transformer const &
transformer
() const¶
Private Types
-
typedef detail::transform_iterator_base<Iterator, Transformer, Reference, Value, Category, Difference>::type
base_type
¶
Private Members
-
Transformer
transformer_
¶
Friends
-
friend
hpx::util::hpx::util::iterator_core_access
-
-
template<typename
-
namespace
-
template<typename ...
Ts
>
classzip_iterator
<hpx::tuple<Ts...>> : public hpx::util::detail::zip_iterator_base<hpx::tuple<Ts...>, zip_iterator<hpx::tuple<Ts...>>>¶ Public Functions
-
constexpr
zip_iterator
()¶
-
constexpr
zip_iterator
(Ts const&... vs)¶
-
constexpr
zip_iterator
(zip_iterator const &other)¶
-
constexpr
zip_iterator
(zip_iterator &&other)¶
-
zip_iterator &
operator=
(zip_iterator const &other)¶
-
zip_iterator &
operator=
(zip_iterator &&other)¶
-
constexpr
-
template<typename
F
, typename ...Ts
>
structlift_zipped_iterators
<F, util::zip_iterator<Ts...>>¶ Public Types
-
namespace
hpx
-
namespace
traits
-
namespace
util
Functions
-
template<typename ...
Ts
>
classzip_iterator
: public hpx::util::detail::zip_iterator_base<hpx::tuple<Ts...>, zip_iterator<Ts...>>¶ Public Functions
-
constexpr
zip_iterator
()
-
constexpr
zip_iterator
(Ts const&... vs)
-
constexpr
zip_iterator
(hpx::tuple<Ts...> &&t)
-
constexpr
zip_iterator
(zip_iterator const &other)
-
constexpr
zip_iterator
(zip_iterator &&other)
-
zip_iterator &
operator=
(zip_iterator const &other)
-
zip_iterator &
operator=
(zip_iterator &&other)
-
constexpr
-
template<typename ...
Ts
>
classzip_iterator
<hpx::tuple<Ts...>> : public hpx::util::detail::zip_iterator_base<hpx::tuple<Ts...>, zip_iterator<hpx::tuple<Ts...>>> Public Functions
-
constexpr
zip_iterator
()
-
constexpr
zip_iterator
(Ts const&... vs)
-
constexpr
zip_iterator
(hpx::tuple<Ts...> &&t)
-
constexpr
zip_iterator
(zip_iterator const &other)
-
constexpr
zip_iterator
(zip_iterator &&other)
-
zip_iterator &
operator=
(zip_iterator const &other)
-
zip_iterator &
operator=
(zip_iterator &&other)
-
constexpr
-
template<typename ...
-
namespace
-
namespace
hpx
-
namespace
traits
Typedefs
-
template<typename
Iter
>
usingis_bidirectional_iterator_t
= typename is_bidirectional_iterator<Iter>::type¶
-
template<typename
Iter
>
usingis_random_access_iterator_t
= typename is_random_access_iterator<Iter>::type¶
-
template<typename
Iter
>
usingis_segmented_local_iterator_t
= typename is_segmented_local_iterator<Iter>::type¶
Variables
-
template<typename
Iter
, typenameCategory
>
constexpr boolhas_category_v
= has_category<Iter, Category>::value¶
-
template<typename
Iter
>
constexpr boolis_bidirectional_iterator_v
= is_bidirectional_iterator<Iter>::value¶
-
template<typename
Iter
>
constexpr boolis_random_access_iterator_v
= is_random_access_iterator<Iter>::value¶
-
template<typename
-
namespace
-
namespace
hpx
-
namespace
hpx
-
namespace
traits
-
namespace
Functions
-
template<typename
Iter
, typenameValueType
, typenameEnable
= std::enable_if_t<hpx::traits::is_forward_iterator<Iter>::value>>
booloperator==
(Iter it, sentinel<ValueType> s)¶
-
template<typename
Iter
, typenameValueType
, typenameEnable
= std::enable_if_t<hpx::traits::is_forward_iterator<Iter>::value>>
booloperator==
(sentinel<ValueType> s, Iter it)¶
-
template<typename
Value
>
structiterator
¶ Public Types
-
template<>
usingvalue_type
= Value¶
-
template<>
usingpointer
= Value const*¶
-
template<>
usingreference
= Value const&¶
Public Functions
-
iterator
(Value initialState)¶
-
virtual Value
operator*
() const¶
-
virtual Value
operator->
() const¶
-
iterator &
operator++
()¶
-
iterator
operator++
(int)¶
-
iterator &
operator--
()¶
-
iterator
operator--
(int)¶
-
virtual Value
operator[]
(difference_type n) const¶
-
iterator &
operator+=
(difference_type n)¶
-
iterator
operator+
(difference_type n) const¶
-
iterator &
operator-=
(difference_type n)¶
-
iterator
operator-
(difference_type n) const¶
-
bool
operator==
(const iterator &that) const¶
-
bool
operator!=
(const iterator &that) const¶
-
bool
operator<
(const iterator &that) const¶
-
bool
operator<=
(const iterator &that) const¶
-
bool
operator>
(const iterator &that) const¶
-
bool
operator>=
(const iterator &that) const¶
Protected Attributes
-
Value
state
¶
-
template<>
-
namespace
tests
¶ Functions
-
template<class
Iterator
, classT
>
voidtrivial_iterator_test
(const Iterator i, const Iterator j, T val)¶
-
template<typename
Iterator
, typenameT
>
voidreadable_iterator_traversal_test
(Iterator i1, T v, std::true_type)¶
-
template<typename
Iterator
, typenameT
>
voidreadable_iterator_traversal_test
(const Iterator, T, std::false_type)¶
-
template<typename
Iterator
, typenameT
>
voidforward_readable_iterator_test
(Iterator i, Iterator j, T val1, T val2)¶
-
template<typename
Iterator
, typenameT
>
voidbidirectional_readable_iterator_test
(Iterator i, T v1, T v2)¶
-
template<typename
Iterator
, typenameTrueVals
>
voidrandom_access_iterator_test
(Iterator i, int N, TrueVals vals)¶
-
template<typename
Iterator
, typenameTrueVals
>
voidrandom_access_readable_iterator_test
(Iterator i, int N, TrueVals vals)¶
-
template<typename
Iterator
, typenameConstIterator
>
voidconst_nonconst_iterator_test
(Iterator i, ConstIterator j)¶
-
template<typename
Iterator
, typenameT
>
voidwritable_iterator_traversal_test
(Iterator i1, T v, std::true_type)¶
-
struct
dummy_type
¶ Public Functions
-
dummy_type
()¶
-
dummy_type
(dummy_constructor)¶
-
dummy_type
(int x)¶
-
int
foo
() const¶
-
bool
operator==
(const dummy_type &d) const¶
Public Members
-
int
x_
¶
-
-
template<typename
T
>
classforward_iterator_archetype
¶ Public Types
-
typedef forward_iterator_archetype
self
¶
-
typedef T
value_type
¶
-
typedef T const *
pointer
¶
Public Functions
-
forward_iterator_archetype
()¶
-
forward_iterator_archetype
(forward_iterator_archetype const&)¶
-
reference
operator*
() const¶
Public Members
-
const typedef T& tests::forward_iterator_archetype::reference
-
typedef forward_iterator_archetype
-
template<typename
T
>
classinput_iterator_archetype_no_proxy
¶ Public Types
-
typedef T
value_type
¶
Public Functions
-
input_iterator_archetype_no_proxy
()¶
-
input_iterator_archetype_no_proxy
(input_iterator_archetype_no_proxy const&)¶
-
reference
operator*
() const¶
Public Members
-
const typedef T& tests::input_iterator_archetype_no_proxy::reference
-
const typedef T* tests::input_iterator_archetype_no_proxy::pointer
Private Types
-
typedef input_iterator_archetype_no_proxy
self
¶
-
typedef T
-
template<class