std::ranges::iterator_t, std::ranges::const_iterator_t, std::ranges::sentinel_t, std::ranges::const_sentinel_t, std::ranges::range_size_t, std::ranges::range_difference_t, std::ranges::range_value_t, std::ranges::range_reference_t

来自cppreference.com
< cpp‎ | ranges
 
 
范围库
范围访问
范围转换器
(C++23)
范围原语
range_size_trange_difference_t
range_value_t
range_reference_trange_const_reference_trange_rvalue_reference_t
(C++23)  
iterator_tconst_iterator_tsentinel_t
(C++23)



悬垂迭代器处理
范围概念
视图

范围工厂
适配器
范围生成器
范围适配器对象
范围适配器闭包对象
辅助项
 
在标头 <ranges> 定义
template< class T >
using iterator_t = decltype(ranges::begin(std::declval<T&>()));
(1) (C++20 起)
template< ranges::range R >
using const_iterator_t = std::const_iterator<ranges::iterator_t<R>>;
(2) (C++23 起)
template< ranges::range R >
using sentinel_t = decltype(ranges::end(std::declval<R&>()));
(3) (C++20 起)
template< ranges::range R >
using const_sentinel_t = std::const_sentinel<ranges::sentinel_t<R>>;
(4) (C++23 起)
template< ranges::sized_range R >
using range_size_t = decltype(ranges::size(std::declval<R&>()));
(5) (C++20 起)
template< ranges::range R >
using range_difference_t = std::iter_difference_t<ranges::iterator_t<R>>;
(6) (C++20 起)
template< ranges::range R >
using range_value_t = std::iter_value_t<ranges::iterator_t<R>>;
(7) (C++20 起)
template< ranges::range R >
using range_reference_t = std::iter_reference_t<ranges::iterator_t<R>>;
(8) (C++20 起)
template< ranges::range R >

using range_const_reference_t =

    std::iter_const_reference_t<ranges::iterator_t<R>>;
(9) (C++23 起)
template< ranges::range R >

using range_rvalue_reference_t =

    std::iter_rvalue_reference_t<ranges::iterator_t<R>>;
(10) (C++20 起)
template< ranges::range R >

using range_common_reference_t =

    std::iter_common_reference_t<ranges::iterator_t<R>>;
(11) (C++23 起)
1) 用于获得 T 的迭代器类型。
2) 用于获得 range 类型 R 的常迭代器类型。
3) 用于获得 range 类型 R 的哨位类型。
4) 用于获得 range 类型 R 的常哨位类型。
5) 用于获得 sized_range 类型 R 的大小类型。
6) 用于获得范围类型 R 的迭代器类型的差类型。
7) 用于获得范围类型 R 的迭代器类型的值类型。
8) 用于获得范围类型 R 的迭代器类型的引用类型。
9) 用于获得范围类型 R 的迭代器类型的常引用类型。
10) 用于获得范围类型 R 的迭代器类型的右值引用类型。
11) 用于获得范围类型 R 的迭代器类型的公共引用类型。

模板形参

T - 能用于 std::ranges::begin 的类型
R - range 类型或 sized_range 类型

注解

iterator_t 能应用到非范围类型,例如未知边界数组。

缺陷报告

下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。

缺陷报告 应用于 出版时的行为 正确行为
LWG 3860 C++20 缺失了 range_common_reference_t 已补充

参阅

计算迭代器的关联类型
(别名模板)