halcheck 1.0
Loading...
Searching...
No Matches
lib/iterator

Iterator utilities and adaptors. More...

Classes

class  halcheck::lib::filter_iterator< I, F >
 An iterator adaptor that skips elements that do not satisfy user-defined predicate. More...
 
class  halcheck::lib::index_iterator< R >
 An iterator into a random-access range that is invalidated if and only if the index of the pointed-to element changes. More...
 
class  halcheck::lib::iterator_interface< Self >
 A utility class for easily defining new iterators. More...
 
class  halcheck::lib::view_interface< Self >
 An implementation of std::ranges::view_interface. More...
 
struct  halcheck::lib::iota_diff< I, typename >
 Computes a type large enough to contain the difference between two instances of an iterator. More...
 
class  halcheck::lib::iota_iterator< T >
 An iterator pointing to an integral value. More...
 
struct  halcheck::lib::enable_borrowed_range< R >
 An implementation of std::ranges::enable_borrowed_range. More...
 
struct  halcheck::lib::is_range< T >
 Determines whether the given type is a range. More...
 
struct  halcheck::lib::is_input_range< T >
 Determines whether a type is a range whose iterators satisfy lib::is_input_iterator. More...
 
struct  halcheck::lib::is_forward_range< T >
 Determines whether a type is a range whose iterators satisfy lib::is_forward_iterator. More...
 
struct  halcheck::lib::is_bidirectional_range< T >
 Determines whether a type is a range whose iterators satisfy lib::is_bidirectional_iterator. More...
 
struct  halcheck::lib::is_random_access_range< T >
 Determines whether a type is a range whose iterators satisfy lib::is_random_access_iterator. More...
 
struct  halcheck::lib::disable_sized_range< T >
 Indicates whether lib::size should be disabled for a type. More...
 
struct  halcheck::lib::is_sized_range< R >
 Determines whether a range type supports the lib::size operation. More...
 
struct  halcheck::lib::is_insertable_range< R >
 Determines whether a range is insertable. More...
 
class  halcheck::lib::subrange< I >
 Describes a range formed from a pair of iterators. More...
 
class  halcheck::lib::transform_iterator< I, F >
 A transforming iterator adaptor. More...
 
class  halcheck::lib::transform_view< V, F >
 A transforming iterator adaptor. More...
 
struct  halcheck::lib::is_iterator< I >
 Determines whether a type satisfies the LegacyIterator concept. More...
 
struct  halcheck::lib::is_input_iterator< I >
 Determines whether a type satisfies the LegacyInputIterator concept. More...
 
struct  halcheck::lib::is_output_iterator< I, T >
 Determines whether a type satisfies the LegacyOutputIterator concept. More...
 
struct  halcheck::lib::is_forward_iterator< I >
 Determines whether a type satisfies the LegacyForwardIterator concept. More...
 
struct  halcheck::lib::is_bidirectional_iterator< I >
 Determines whether a type satisfies the LegacyBidirectionalIterator concept. More...
 
struct  halcheck::lib::is_random_access_iterator< I >
 Determines whether a type satisfies the LegacyRandomAccessIterator concept. More...
 

Typedefs

template<typename I >
using halcheck::lib::iter_value_t = typename std::iterator_traits<I>::value_type
 The type of value pointed to by an iterator.
 
template<typename I >
using halcheck::lib::iter_reference_t = typename std::iterator_traits<I>::reference
 The return type of operator* for an iterator.
 
template<typename I >
using halcheck::lib::iter_difference_t = typename std::iterator_traits<I>::difference_type
 The return type of operator- for an iterator.
 
template<typename I >
using halcheck::lib::iter_category_t = typename std::iterator_traits<I>::iterator_category
 A tag type indicating the level of supported iterator options a type provides.
 
template<typename I >
using halcheck::lib::iota_diff_t = typename iota_diff<I>::type
 Computes a type large enough to contain the difference between two instances of an iterator.
 
template<typename T >
using halcheck::lib::iterator_t = decltype(lib::begin(std::declval<T &>()))
 Obtains the iterator type of a range type.
 
template<typename R >
using halcheck::lib::range_size_t = decltype(lib::size(std::declval<R &>()))
 The type of value returned by lib::size.
 
template<typename R >
using halcheck::lib::range_difference_t = lib::iter_difference_t<lib::iterator_t<R>>
 The type of value returned by operator- for a range type's iterators.
 
template<typename R >
using halcheck::lib::range_value_t = lib::iter_value_t<lib::iterator_t<R>>
 The type of element contained in a range.
 
template<typename R >
using halcheck::lib::range_reference_t = lib::iter_reference_t<lib::iterator_t<R>>
 The type returned by operator* for a range type's iterators.
 

Functions

template<typename I >
lib::subrange< I > halcheck::lib::make_subrange (I first, I last)
 Constructs a subrange from a pair of iterators.
 

Variables

struct { 
 
halcheck::lib::make_filter_iterator 
 Constructs a filter_iterator.
 
struct { 
 
halcheck::lib::make_index_iterator 
 Constructs an index_iterator.
 
struct { 
 
halcheck::lib::make_iota_iterator 
 Constructs an iota_iterator.
 
struct { 
 
halcheck::lib::begin 
 Gets an iterator to the first element of a range.
 
struct { 
 
halcheck::lib::end 
 Gets an iterator to past the end of a range.
 
struct { 
 
halcheck::lib::size 
 Obtains the size of a range.
 
struct { 
 
halcheck::lib::empty 
 Determines if a range is empty.
 
struct { 
 
halcheck::lib::make_transform_iterator 
 Constructs a transform_iterator.
 
struct { 
 
halcheck::lib::transform 
 Constructs a transform_view.
 

Detailed Description

Iterator utilities and adaptors.

See also
https://en.cppreference.com/w/cpp/header/iterator