std::ranges::iterator_t, std::ranges::const_iterator_t, std::ranges::sentinel_t, std::ranges::const_sentinel_t
Min standard notice:
Header: <ranges>
- Used to obtain the iterator type of the type T.
# Declarations
template< class T >
using iterator_t = decltype(ranges::begin(std::declval<T&>()));
(since C++20)
template< ranges::range R >
using const_iterator_t = decltype(ranges::cbegin(std::declval<R&>()));
(since C++23)
template< ranges::range R >
using sentinel_t = decltype(ranges::end(std::declval<R&>()));
(since C++20)
template< ranges::range R >
using const_sentinel_t = decltype(ranges::cend(std::declval<R&>()));
(since C++23)
# Notes
iterator_t can be applied to non-range types, e.g. arrays with unknown bound.
# Defect reports
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 3946 | C++23 | const_iterator_t and const_sentinel_t were inconsistentwith the result of ranges::cbegin and ranges::cend respectively | tweaked |
# See also
- iter_value_titer_reference_titer_const_reference_titer_difference_titer_rvalue_reference_titer_common_reference_t
- ranges::range_difference_tranges::range_size_tranges::range_value_t
- ranges::range_reference_tranges::range_const_reference_tranges::range_rvalue_reference_tranges::range_common_reference_t