Classes and ancillary functions used to customize access performed via iterators. More...
Classes | |
struct | iterator_range< Iterator > |
An auxiliary class for a range given by a pair of iterators. More... | |
class | generating_input_iterator< GeneratingFunctor, ValueType > |
Implements semantics of an input iterator to providing access to elements generated by a given functional object. More... | |
struct | transforming_iterator< BaseIterator, TransformingFunctor > |
struct | raw_pointer_iterator< T * > |
An wrapper over a raw pointer considered as an iterator used to resolve security warnings produced by Microsoft C++ compilers. The class is defined independently of a compiler used. More... | |
Functions | |
template<class IteratorBegin , class IteratorEnd > | |
iterator_range< std::common_type_t< std::decay_t< IteratorBegin >, std::decay_t< IteratorEnd > > > | make_iterator_range (IteratorBegin &&begin_iterator, IteratorEnd &&end_iterator) noexcept(std::is_nothrow_constructible< iterator_range< std::common_type_t< std::decay_t< IteratorBegin >, std::decay_t< IteratorEnd >>>, IteratorBegin && >::value &&std::is_nothrow_constructible< iterator_range< std::common_type_t< std::decay_t< IteratorBegin >, std::decay_t< IteratorEnd >>>, IteratorEnd && >::value) |
Forwards the deduced parameters to the corresponding constructor of the iterator_range class template specialized for the common type of both template arguments. More... | |
template<class Iterator > | |
iterator_range< Iterator > | make_iterator_range (const std::pair< Iterator, Iterator > &range_pair) noexcept(std::is_nothrow_copy_constructible< Iterator >::value) |
Constructs an iterator_range object based on a copy of bounding iterators given by a pair. More... | |
template<class Iterator > | |
iterator_range< Iterator > | make_iterator_range (std::pair< Iterator, Iterator > &&range_pair) noexcept(std::is_nothrow_move_constructible< Iterator >::value) |
Constructs an iterator_range object by taking ownership of bounding iterators given by a pair. More... | |
template<class OtherRange > | |
iterator_range< typename std::decay< OtherRange >::type::iterator > | make_iterator_range (OtherRange &&range) noexcept((std::is_rvalue_reference< OtherRange && >::value &&std::is_nothrow_move_constructible< typename std::decay< OtherRange >::type::iterator >::value)||(std::is_lvalue_reference< OtherRange && >::value &&std::is_nothrow_copy_constructible< typename std::decay< OtherRange >::type::iterator >::value)) |
Constructs a range from another range forwarding the call to the corresponding constructor of iterator_range. More... | |
template<class GeneratingFunctor > | |
auto | make_generating_input_iterator (GeneratingFunctor generator) |
A helper function used to create a generating iterator of type generating_input_iterator with deduction of its template parameters prior to C++17. More... | |
template<class BaseRandomAccessIterator , class TransformingFunctor > | |
transforming_iterator< BaseRandomAccessIterator, TransformingFunctor > | operator+ (typename transforming_iterator< BaseRandomAccessIterator, TransformingFunctor >::difference_type n, const transforming_iterator< BaseRandomAccessIterator, TransformingFunctor > &iter) |
Creates a copy of a transforming iterator associated with a position shifted by a specified number to the end. More... | |
template<class BaseIterator , class TransformingFunctor > | |
transforming_iterator< BaseIterator, typename std::remove_reference< TransformingFunctor >::type > | make_transforming_iterator (BaseIterator it, TransformingFunctor &&transformer) |
Returns an instance of transforming_iterator for a given iterator and a transforming Callable object. | |
template<class T > | |
constexpr raw_pointer_iterator< T * >::reference | operator* (const raw_pointer_iterator< T * > &it) noexcept(noexcept(*it.base())) |
Dereferences a raw_pointer_iterator . More... | |
template<class T > | |
raw_pointer_iterator< T * > | operator++ (raw_pointer_iterator< T * > &it, int) noexcept(noexcept(raw_pointer_iterator< T * >(it)) &&noexcept(++it)) |
Postfix increment operation which shifts the iterated position to the right by 1 but returns a new iterator in the pre-increment state. More... | |
template<class T > | |
raw_pointer_iterator< T * > | operator-- (raw_pointer_iterator< T * > &it, int) noexcept(noexcept(raw_pointer_iterator< T * >(it)) &&noexcept(--it)) |
Postfix decrement operation which shifts the iterated position to the left by 1 but returns a new iterator in the pre-decrement state. More... | |
template<class T > | |
constexpr raw_pointer_iterator< T * > | operator+ (typename raw_pointer_iterator< T * >::difference_type n, const raw_pointer_iterator< T * > &right) noexcept(noexcept(right+n)) |
Adds an offset to an iterator and returns the new raw_pointer_iterator addressing the element at the new offset position. More... | |
template<class T , class U > | |
constexpr common_difference_type | operator- (const raw_pointer_iterator< T * > &left, const raw_pointer_iterator< U * > &right) |
Calculates a difference between two iterators, i.e. between the two underlying pointers. More... | |
template<class T , class U > | |
constexpr bool | operator== (const raw_pointer_iterator< T * > &left, const raw_pointer_iterator< U * > &right) noexcept |
Checks the two iterators for equality. More... | |
template<class T , class U > | |
constexpr bool | operator!= (const raw_pointer_iterator< T * > &left, const raw_pointer_iterator< U * > &right) noexcept |
Checks the two iterators for inequality. More... | |
template<class T , class U > | |
constexpr bool | operator< (const raw_pointer_iterator< T * > &left, const raw_pointer_iterator< U * > &right) noexcept |
Performs the "less-than" comparison of two iterators. More... | |
template<class T , class U > | |
constexpr bool | operator<= (const raw_pointer_iterator< T * > &left, const raw_pointer_iterator< U * > &right) noexcept |
Performs the "less-or-equal-than" comparison of two iterators. More... | |
template<class T , class U > | |
constexpr bool | operator>= (const raw_pointer_iterator< T * > &left, const raw_pointer_iterator< U * > &right) noexcept |
Performs the "greater-or-equal-than" comparison of two iterators. More... | |
template<class T , class U > | |
constexpr bool | operator> (const raw_pointer_iterator< T * > &left, const raw_pointer_iterator< U * > &right) noexcept |
Performs the "greater-than" comparison of two iterators. More... | |
template<class T > | |
constexpr raw_pointer_iterator< T * > | make_raw_pointer_iterator (T *ptr, std::size_t cSize, typename raw_pointer_iterator< T * >::difference_type iOffset) noexcept(noexcept(raw_pointer_iterator< T * >(ptr, cSize, iOffset))) |
The function for creation iterators, which, in essence, are raw pointers, that has an interface compatible with Microsoft stdext::checked_array_iterator. More... | |
template<class Iterator > | |
constexpr unspecified | offset_iterator_begin (Iterator it) noexcept |
Returns an object of an unspecified type which is an iterator of the same category as the parameter but redefines increment, decrement and comparison operators to keep the current offset from the initial position. More... | |
template<class Iterator > | |
constexpr auto | offset_iterator_end (Iterator it, difference_type offset) noexcept |
Returns an object of an unspecified type which is an iterator of the same category as the parameter but redefines the respective comparison operators to keep the current offset from the initial position given parametrically. More... | |
Classes and ancillary functions used to customize access performed via iterators.