VCCC  2024.05
VisualCamp Common C++ library
counted_iterator< I > Class Template Reference

#include </home/jarvis/actions-runner/jarvis-vccc-2/_work/vccc/vccc/include/vccc/__iterator/counted_iterator.hpp>

+ Inheritance diagram for counted_iterator< I >:

Public Types

using iterator_type = I
 
using difference_type = iter_difference_t< I >
 

Public Member Functions

constexpr counted_iterator ()=default
 
constexpr counted_iterator (I x, iter_difference_t< I > n)
 
template<typename I2 , std::enable_if_t< convertible_to< const I2 &, I >::value, int > = 0>
constexpr counted_iterator (const counted_iterator< I2 > &other)
 
template<typename I2 , std::enable_if_t< assignable_from< I &, const I2 & >::value, int > = 0>
constexpr counted_iteratoroperator= (const counted_iterator< I2 > &other)
 
constexpr const I & base () const &noexcept
 
constexpr I base () &&
 
constexpr difference_type count () const noexcept
 
constexpr decltype(auto) operator* ()
 
template<typename I2 = I, std::enable_if_t< dereferenceable< const I2 >::value, int > = 0>
constexpr decltype(auto) operator* () const
 
template<typename I2 = I, std::enable_if_t< contiguous_iterator< I2 >::value, int > = 0>
constexpr auto operator-> () const noexcept
 
template<typename I2 = I, std::enable_if_t< random_access_iterator< I2 >::value, int > = 0>
constexpr decltype(auto) operator[] (iter_difference_t< I > n) const
 
constexpr counted_iteratoroperator++ ()
 
template<typename I2 = I, std::enable_if_t< forward_iterator< I2 >::value==false, int > = 0>
decltype(auto) VCCC_CONSTEXPR_AFTER_CXX20 operator++ (int)
 
template<typename I2 = I, std::enable_if_t< forward_iterator< I2 >::value, int > = 0>
constexpr counted_iterator operator++ (int)
 
template<typename I2 = I, std::enable_if_t< bidirectional_iterator< I2 >::value, int > = 0>
constexpr counted_iteratoroperator-- ()
 
template<typename I2 = I, std::enable_if_t< bidirectional_iterator< I2 >::value, int > = 0>
constexpr counted_iterator operator-- (int)
 
template<typename I2 = I, std::enable_if_t< random_access_iterator< I2 >::value, int > = 0>
constexpr counted_iterator operator+ (iter_difference_t< I > n) const
 
template<typename I2 = I, std::enable_if_t< random_access_iterator< I2 >::value, int > = 0>
constexpr counted_iteratoroperator+= (iter_difference_t< I > n)
 
template<typename I2 = I, std::enable_if_t< random_access_iterator< I2 >::value, int > = 0>
constexpr counted_iterator operator- (iter_difference_t< I > n) const
 
template<typename I2 = I, std::enable_if_t< random_access_iterator< I2 >::value, int > = 0>
constexpr counted_iteratoroperator-= (iter_difference_t< I > n)
 

Friends

template<typename I2 , std::enable_if_t< common_with< I, I2 >::value, int > = 0>
constexpr friend bool operator== (const counted_iterator &x, const counted_iterator< I2 > &y)
 
template<typename I2 , std::enable_if_t< common_with< I, I2 >::value, int > = 0>
constexpr friend bool operator< (const counted_iterator &x, const counted_iterator< I2 > &y)
 
template<typename I2 , std::enable_if_t< common_with< I, I2 >::value, int > = 0>
constexpr friend bool operator!= (const counted_iterator &x, const counted_iterator< I2 > &y)
 
template<typename I2 , std::enable_if_t< common_with< I, I2 >::value, int > = 0>
constexpr friend bool operator<= (const counted_iterator &x, const counted_iterator< I2 > &y)
 
template<typename I2 , std::enable_if_t< common_with< I, I2 >::value, int > = 0>
constexpr friend bool operator> (const counted_iterator &x, const counted_iterator< I2 > &y)
 
template<typename I2 , std::enable_if_t< common_with< I, I2 >::value, int > = 0>
constexpr friend bool operator>= (const counted_iterator &x, const counted_iterator< I2 > &y)
 
constexpr friend bool operator== (const counted_iterator &x, default_sentinel_t)
 
constexpr friend bool operator== (default_sentinel_t, const counted_iterator &x)
 
constexpr friend bool operator!= (const counted_iterator &x, default_sentinel_t)
 
constexpr friend bool operator!= (default_sentinel_t, const counted_iterator &x)
 
template<typename I2 = I>
constexpr friend std::enable_if_t< random_access_iterator< I2 >::value, counted_iteratoroperator+ (iter_difference_t< I > n, const counted_iterator &x)
 
template<typename I2 >
constexpr friend iter_difference_t< I2 > operator- (const counted_iterator &x, const counted_iterator< I2 > &y)
 
constexpr friend iter_difference_t< I > operator- (const counted_iterator &x, default_sentinel_t)
 
constexpr friend iter_difference_t< I > operator- (default_sentinel_t, const counted_iterator &y)
 
template<typename I2 = I, std::enable_if_t< input_iterator< I2 >::value, int > = 0>
constexpr friend iter_rvalue_reference_t< I2 > iter_move (const counted_iterator &i) noexcept(noexcept(ranges::iter_move(i.base())))
 
template<typename I2 , std::enable_if_t< indirectly_swappable< I2, I >::value, int > = 0>
constexpr friend void iter_swap (const counted_iterator &x, const counted_iterator< I2 > &y) noexcept(noexcept(ranges::iter_swap(x.base(), y.base())))
 

Member Typedef Documentation

◆ difference_type

◆ iterator_type

using iterator_type = I

Constructor & Destructor Documentation

◆ counted_iterator() [1/3]

constexpr counted_iterator ( )
constexprdefault

◆ counted_iterator() [2/3]

constexpr counted_iterator ( x,
iter_difference_t< I >  n 
)
inlineconstexpr

◆ counted_iterator() [3/3]

constexpr counted_iterator ( const counted_iterator< I2 > &  other)
inlineconstexpr

Member Function Documentation

◆ base() [1/2]

constexpr I base ( ) &&
inlineconstexpr

◆ base() [2/2]

constexpr const I& base ( ) const &
inlineconstexprnoexcept

◆ count()

constexpr difference_type count ( ) const
inlineconstexprnoexcept

◆ operator*() [1/2]

constexpr decltype(auto) operator* ( )
inlineconstexpr

◆ operator*() [2/2]

constexpr decltype(auto) operator* ( ) const
inlineconstexpr

◆ operator+()

constexpr counted_iterator operator+ ( iter_difference_t< I >  n) const
inlineconstexpr

◆ operator++() [1/3]

constexpr counted_iterator& operator++ ( )
inlineconstexpr

◆ operator++() [2/3]

decltype(auto) VCCC_CONSTEXPR_AFTER_CXX20 operator++ ( int  )
inline

◆ operator++() [3/3]

constexpr counted_iterator operator++ ( int  )
inlineconstexpr

◆ operator+=()

constexpr counted_iterator& operator+= ( iter_difference_t< I >  n)
inlineconstexpr

◆ operator-()

constexpr counted_iterator operator- ( iter_difference_t< I >  n) const
inlineconstexpr

◆ operator--() [1/2]

constexpr counted_iterator& operator-- ( )
inlineconstexpr

◆ operator--() [2/2]

constexpr counted_iterator operator-- ( int  )
inlineconstexpr

◆ operator-=()

constexpr counted_iterator& operator-= ( iter_difference_t< I >  n)
inlineconstexpr

◆ operator->()

constexpr auto operator-> ( ) const
inlineconstexprnoexcept

◆ operator=()

constexpr counted_iterator& operator= ( const counted_iterator< I2 > &  other)
inlineconstexpr

◆ operator[]()

constexpr decltype(auto) operator[] ( iter_difference_t< I >  n) const
inlineconstexpr

Friends And Related Function Documentation

◆ iter_move

constexpr friend iter_rvalue_reference_t<I2> iter_move ( const counted_iterator< I > &  i)
friend

◆ iter_swap

constexpr friend void iter_swap ( const counted_iterator< I > &  x,
const counted_iterator< I2 > &  y 
)
friend

◆ operator!= [1/3]

constexpr friend bool operator!= ( const counted_iterator< I > &  x,
const counted_iterator< I2 > &  y 
)
friend

◆ operator!= [2/3]

constexpr friend bool operator!= ( const counted_iterator< I > &  x,
default_sentinel_t   
)
friend

◆ operator!= [3/3]

constexpr friend bool operator!= ( default_sentinel_t  ,
const counted_iterator< I > &  x 
)
friend

◆ operator+

constexpr friend std::enable_if_t<random_access_iterator<I2>::value, counted_iterator> operator+ ( iter_difference_t< I >  n,
const counted_iterator< I > &  x 
)
friend

◆ operator- [1/3]

constexpr friend iter_difference_t<I2> operator- ( const counted_iterator< I > &  x,
const counted_iterator< I2 > &  y 
)
friend

◆ operator- [2/3]

constexpr friend iter_difference_t<I> operator- ( const counted_iterator< I > &  x,
default_sentinel_t   
)
friend

◆ operator- [3/3]

constexpr friend iter_difference_t<I> operator- ( default_sentinel_t  ,
const counted_iterator< I > &  y 
)
friend

◆ operator<

constexpr friend bool operator< ( const counted_iterator< I > &  x,
const counted_iterator< I2 > &  y 
)
friend

◆ operator<=

constexpr friend bool operator<= ( const counted_iterator< I > &  x,
const counted_iterator< I2 > &  y 
)
friend

◆ operator== [1/3]

constexpr friend bool operator== ( const counted_iterator< I > &  x,
const counted_iterator< I2 > &  y 
)
friend

◆ operator== [2/3]

constexpr friend bool operator== ( const counted_iterator< I > &  x,
default_sentinel_t   
)
friend

◆ operator== [3/3]

constexpr friend bool operator== ( default_sentinel_t  ,
const counted_iterator< I > &  x 
)
friend

◆ operator>

constexpr friend bool operator> ( const counted_iterator< I > &  x,
const counted_iterator< I2 > &  y 
)
friend

◆ operator>=

constexpr friend bool operator>= ( const counted_iterator< I > &  x,
const counted_iterator< I2 > &  y 
)
friend

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