std::ranges...sentinel_t,(3)
πΈ NAME πΈ
okay so bestie, welcome to the C++ Standard Library manual page std::ranges...sentinel_t,(3) β yes the title is a little cursed but we move π
. This page is the group chat for std::ranges::iterator_t, std::ranges::const_iterator_t, and std::ranges::sentinel_t. The original NAME line repeats the squad after the dash too: std::ranges::iterator_t, std::ranges::const_iterator_t, std::ranges::sentinel_t. No cap, that's the name zone.
β¨ Synopsis β¨
also hanging at the top of the synopsis: std::ranges::range_value_t, std::ranges::range_reference_t.
Defined in header <ranges>.
template< class T >
using iterator_t = decltype(ranges::begin(std::declval<T&>()));
template< ranges::range R >
using const_iterator_t = decltype(ranges::cbegin(std::declval<R&>()));
template< ranges::range R >
using sentinel_t = decltype(ranges::end(std::declval<R&>()));
template< ranges::range R >
using const_sentinel_t = decltype(ranges::cend(std::declval<R&>()));
template< ranges::sized_range R >
using range_size_t = decltype(ranges::size(std::declval<R&>()));
template< ranges::range R >
using range_difference_t = std::iter_difference_t<ranges::iterator_t<R>>;
template< ranges::range R >
using range_value_t = std::iter_value_t<ranges::iterator_t<R>>;
template< ranges::range R >
using range_reference_t = std::iter_reference_t<ranges::iterator_t<R>>;
template< ranges::range R >
using range_const_reference_t = std::iter_const_reference_t<ranges::iterator_t<R>>;
template< ranges::range R >
using range_rvalue_reference_t = std::iter_rvalue_reference_t<ranges::iterator_t<R>>;
template< ranges::range R >
using range_common_reference_t = std::iter_common_reference_t<ranges::iterator_t<R>>;
(1)β since C++20 β used to obtain the iterator type of the typeT.(2)β since C++23 β used to obtain the constant iterator type of the range typeR.(3)β since C++20 β used to obtain the sentinel type of the range typeR.(4)β since C++23 β used to obtain the constant sentinel type of the range typeR.(5)β since C++20 β used to obtain the size type of thesized_rangetypeR.(6)β since C++20 β used to obtain the difference type of the iterator type of range typeR.(7)β since C++20 β used to obtain the value type of the iterator type of range typeR.(8)β since C++20 β used to obtain the reference type of the iterator type of range typeR.(9)β since C++23 β used to obtain the constant reference type of the iterator type of range typeR.(10)β since C++20 β used to obtain the rvalue reference type of the iterator type of range typeR.(11)β since C++20 β used to obtain the common reference type of the iterator type of range typeR.
π§ Template parameters π§
Tβ a type that can be used instd::ranges::begin.Rβ a range type or asized_rangetype.
π Notes π
important note, bestie: iterator_t can be applied to non-range types, e.g. arrays with unknown bound. That's the whole note and it's lowkey iconic.
π Defect reports π
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
- DR: LWG 3860 β Applied to: C++20 β behavior as published:
range_common_reference_twas missing β correct behavior: added. - DR: LWG 3946 β Applied to: C++23 β behavior as published:
const_iterator_tandconst_sentinel_twere inconsistent with the result ofranges::cbeginandranges::cendrespectively β correct behavior: tweaked.
π«Ά See also π«Ά
The See also crew, with their standards tags:
iter_value_t(C++20) (alias template)iter_reference_t(C++20)iter_const_reference_t(C++23)iter_difference_t(C++20)iter_rvalue_reference_t(C++20)iter_common_reference_t(C++20)
They compute the associated types of an iterator. iykyk β¨
mwah π source/version/date: http://cppreference.com Β· 2024.06.10 Β· std::ranges...sentinel_t,(3). periodt π
π¦ where this page comes from
- nixpkgs unstable: stdman 2024.07.05
- opensuse-leap 16.0: stdman 2024.07.05-bp160.1.9 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms