Sequoia
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Public Attributes | Friends | List of all members
sequoia::utilities::iterator< Iterator, DereferencePolicy > Class Template Reference

An iterator with policies controlling dereferencing and auxiliary data. More...

#include <Iterator.hpp>

Inheritance diagram for sequoia::utilities::iterator< Iterator, DereferencePolicy >:

Public Types

using base_iterator_type = Iterator
 
using dereference_policy_type = DereferencePolicy
 
using value_type = typename DereferencePolicy::value_type
 
using reference = typename DereferencePolicy::reference
 
using difference_type = difference_type_t< Iterator, DereferencePolicy >
 
using pointer = pointer_type_t< Iterator, DereferencePolicy >
 

Public Member Functions

template<class Arg , class... Args>
requires (!resolve_to_copy_v<iterator, Arg, Args...>)
constexpr explicit (sizeof...(Args)==0) iterator(Arg &&baseIterArg
 
constexpr iterator (const iterator &)=default
 
constexpr iterator (iterator &&) noexcept=default
 
constexpr iteratoroperator= (const iterator &)=default
 
constexpr iteratoroperator= (iterator &&) noexcept=default
 
constexpr base_iterator_type base_iterator () const noexcept
 
constexpr reference operator* () const
 
constexpr reference operator[] (const difference_type n) const
 
constexpr pointer operator-> () const
 
constexpr iteratoroperator++ ()
 
constexpr iterator operator++ (int)
 
constexpr iteratoroperator+= (const difference_type n)
 
constexpr iteratoroperator-- ()
 
constexpr iterator operator-- (int)
 
constexpr iteratoroperator-= (const difference_type n)
 

Public Attributes

constexpr Args && args: DereferencePolicy{std::forward<Args>(args)...}
 
constexpr Args m_BaseIterator
 

Friends

constexpr iterator operator+ (const iterator &it, const difference_type n)
 
constexpr iterator operator+ (const difference_type n, const iterator &it)
 
constexpr iterator operator- (const iterator &it, const difference_type n)
 
constexpr difference_type operator- (const iterator &lhs, const iterator &rhs)
 
constexpr bool operator== (const iterator &lhs, const iterator &rhs) noexcept
 
constexpr auto operator<=> (const iterator &lhs, const iterator &rhs) noexcept
 

Detailed Description

template<class Iterator, dereference_policy_for< Iterator > DereferencePolicy>
requires has_sensible_semantics<Iterator, DereferencePolicy>
class sequoia::utilities::iterator< Iterator, DereferencePolicy >

An iterator with policies controlling dereferencing and auxiliary data.

The DereferencePolicy allows customisation of the various dereferencing operators. In principle it is therefore possible that dereferencing will not return a reference, which can be useful. However, this can cause the semantics to be confusing if the underlying iterator is indirectly_writable. Therefore, this is forbidden.

Member Data Documentation

◆ m_BaseIterator

template<class Iterator , dereference_policy_for< Iterator > DereferencePolicy>
constexpr Args sequoia::utilities::iterator< Iterator, DereferencePolicy >::m_BaseIterator
Initial value:
{std::forward<Arg>(baseIterArg)}
{}
template<class Iter, class DerefPol>
requires ( !std::is_same_v<Iter, Iterator>
&& consistent_policies_v<DereferencePolicy, DerefPol>)
: DereferencePolicy{static_cast<const DerefPol&>(iter)}
An iterator with policies controlling dereferencing and auxiliary data.
Definition: Iterator.hpp:234
A concept similar to std::constructible_from, but which considers braced-init.
Definition: Concepts.hpp:75

The documentation for this class was generated from the following file: