Open 3D Engine AzCore API Reference 23.10.0
O3DE is an open-source, fully-featured, high-fidelity, modular 3D engine for building games and simulations, available to every industry.
AZStd::counted_iterator< I > Class Template Reference

#include <counted_iterator.h>

Inherits AZStd::Internal::counted_iterator_value_type< I, class >, AZStd::Internal::counted_iterator_iter_concept< I, class >, AZStd::Internal::counted_iterator_iter_category< I, class >, and enable_if_t< input_or_output_iterator< I >, Internal::counted_iterator_requirements_fulfilled >.

Public Types

using iterator_type = I
 
using difference_type = iter_difference_t< I >
 
using reference = iter_reference_t< I >
 reference type and pointer type is need to use with algorithms that use pre c++20 iterator_traits
 
using pointer = conditional_t< contiguous_iterator< I >, decltype(to_address(declval< I >())), void >
 

Public Member Functions

constexpr counted_iterator (I i, iter_difference_t< I > length)
 
template<class I2 , class = enable_if_t<convertible_to<const I2&, I>>>
constexpr counted_iterator (const counted_iterator< I2 > &other)
 
template<class I2 , class = enable_if_t<assignable_from<I&, const I2&>>>
constexpr counted_iteratoroperator= (const counted_iterator< I2 > &other)
 
constexpr const I & base () const &noexcept
 
constexpr I base () &&
 
constexpr iter_difference_t< I > count () const noexcept
 
constexpr decltype(auto) operator* ()
 
template<bool Enable = Internal::dereferenceable<const I>, class = enable_if_t<Enable>>
constexpr decltype(auto) operator* () const
 
template<bool Enable = contiguous_iterator<I>, class = enable_if_t<Enable>>
constexpr auto operator-> () const noexcept
 
template<bool Enable = random_access_iterator<I>, class = enable_if_t<Enable>>
constexpr decltype(auto) operator[] (iter_difference_t< I > n) const noexcept
 
constexpr counted_iteratoroperator++ ()
 
constexpr decltype(auto) operator++ (int)
 
template<bool Enable = bidirectional_iterator<I>, class = enable_if_t<Enable>>
constexpr counted_iteratoroperator-- ()
 
template<bool Enable = bidirectional_iterator<I>, class = enable_if_t<Enable>>
constexpr counted_iterator operator-- (int)
 
template<bool Enable = random_access_iterator<I>, class = enable_if_t<Enable>>
constexpr counted_iterator operator+ (iter_difference_t< I > n)
 
template<bool Enable = random_access_iterator<I>, class = enable_if_t<Enable>>
constexpr counted_iteratoroperator+= (iter_difference_t< I > n)
 
template<bool Enable = random_access_iterator<I>, class = enable_if_t<Enable>>
constexpr counted_iterator operator- (iter_difference_t< I > n)
 
template<bool Enable = random_access_iterator<I>, class = enable_if_t<Enable>>
constexpr counted_iteratoroperator-= (iter_difference_t< I > n)
 

Friends

template<bool Enable = random_access_iterator<I>, class = enable_if_t<Enable>>
constexpr counted_iterator operator+ (iter_difference_t< I > n, const counted_iterator &x)
 
template<class I2 >
constexpr auto operator- (const counted_iterator &x, const counted_iterator< I2 > &y) -> enable_if_t< common_with< I2, I >, iter_difference_t< I2 > >
 
constexpr iter_difference_t< I > operator- (const counted_iterator &x, default_sentinel_t)
 
constexpr iter_difference_t< I > operator- (default_sentinel_t, const counted_iterator &y)
 
template<class I2 >
constexpr auto operator== (const counted_iterator &x, const counted_iterator< I2 > &y) -> enable_if_t< common_with< I2, I >, bool >
 
template<class I2 >
constexpr auto operator!= (const counted_iterator &x, const counted_iterator< I2 > &y) -> enable_if_t< common_with< I2, I >, bool >
 
constexpr bool operator== (const counted_iterator &x, default_sentinel_t)
 
constexpr bool operator!= (const counted_iterator &x, default_sentinel_t)
 
constexpr bool operator== (default_sentinel_t, const counted_iterator &x)
 
constexpr bool operator!= (default_sentinel_t, const counted_iterator &x)
 
template<class I2 >
constexpr auto operator< (const counted_iterator &x, const counted_iterator< I2 > &y) -> enable_if_t< common_with< I2, I >, bool >
 
template<class I2 >
constexpr auto operator> (const counted_iterator &x, const counted_iterator< I2 > &y) -> enable_if_t< common_with< I2, I >, bool >
 
template<class I2 >
constexpr auto operator<= (const counted_iterator &x, const counted_iterator< I2 > &y) -> enable_if_t< common_with< I2, I >, bool >
 
template<class I2 >
constexpr auto operator>= (const counted_iterator &x, const counted_iterator< I2 > &y) -> enable_if_t< common_with< I2, I >, bool >
 
constexpr auto iter_move (const counted_iterator &i) noexcept(noexcept(ranges::iter_move(declval< const I & >()))) -> enable_if_t< input_iterator< I >, iter_rvalue_reference_t< I > >
 
template<class I2 , enable_if_t< indirectly_swappable< I2, I > > >
constexpr void iter_swap (const counted_iterator &x, const counted_iterator< I2 > &y) noexcept(noexcept(ranges::iter_swap(declval< const I & >(), declval< const I2 & >())))
 

Detailed Description

template<class I>
class AZStd::counted_iterator< I >

counted_iterator is an iterator adapter that behaves the same as the underlying iterator except its keeps track of the distance to the end of the range


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