std::ranges::iterator_t, std::ranges::const_iterator_t, std::ranges::sentinel_t, std::ranges::const_sentinel_t

From cppreference.com
< cpp‎ | ranges
 
 
Ranges library
Range adaptors
 
Defined in header <ranges>
template< class T >
using iterator_t = decltype(ranges::begin(std::declval<T&>()));
(1) (since C++20)
template< ranges::range R >
using const_iterator_t = decltype(ranges::cbegin(std::declval<R&>()));
(2) (since C++23)
template< ranges::range R >
using sentinel_t = decltype(ranges::end(std::declval<R&>()));
(3) (since C++20)
template< ranges::range R >
using const_sentinel_t = decltype(ranges::cend(std::declval<R&>()));
(4) (since C++23)
1) Used to obtain the iterator type of the type T.
2) Used to obtain the constant iterator type of the range type R.
3) Used to obtain the sentinel type of the range type R.
4) Used to obtain the constant sentinel type of the range type R.

Template parameters

T - a type that can be used in std::ranges::begin
R - a range type or a sized_range type

Notes

iterator_t can be applied to non-range types, e.g. arrays with unknown bound.

Defect reports

The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

DR Applied to Behavior as published Correct behavior
LWG 3946 C++23 const_iterator_t and const_sentinel_t were inconsistent
with the result of ranges::cbegin and ranges::cend respectively
tweaked

See also

computes the associated types of an iterator
(alias template)
obtains size, difference, and value types of a range
(alias template)
obtains reference types of a range
(alias template)