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

From cppreference.com
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)