# std::ranges::iterator_t, std::ranges::sentinel_t, std::ranges::range_size_t, std::ranges::range_difference_t, std::ranges::range_value_t, std::ranges::range_reference_t, std::ranges::range_rvalue_reference_t

< cpp‎ | ranges

定义于头文件 `<ranges>` |  |
template <class T> using iterator_t = decltype(ranges::begin(std::declval<T&>())); | (1) | (C++20 起)
template <ranges::range R> using sentinel_t = decltype(ranges::end(std::declval<R&>())); | (2) | (C++20 起)
template <ranges::sized_range R> using range_size_t = decltype(ranges::size(std::declval<R&>())); | (3) | (C++20 起)
template <ranges::range R> using range_difference_t = std::iter_difference_t<ranges::iterator_t<R>>; | (4) | (C++20 起)
template <ranges::range R> using range_value_t = std::iter_value_t<ranges::iterator_t<R>>; | (5) | (C++20 起)
template <ranges::range R> using range_reference_t = std::iter_reference_t<ranges::iterator_t<R>>; | (6) | (C++20 起)
template <ranges::range R> using range_rvalue_reference_t = std::iter_rvalue_reference_t<ranges::iterator_t<R>>; | (7) | (C++20 起)

1) 用于获得 `T` 的迭代器类型。
2) 用于获得 `range` 类型 `R` 的哨位类型。
3) 用于获得 `sized_range` 类型 `R` 的大小类型。
4) 用于获得范围类型 `R` 的迭代器类型的差类型。
5) 用于获得范围类型 `R` 的迭代器类型的值类型。
6) 用于获得范围类型 `R` 的迭代器类型的引用类型。
7) 用于获得范围类型 `R` 的迭代器类型的右值引用类型。

### 模板形参

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

### 注解

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

### 参阅

iter_value_t iter_reference_t iter_difference_t iter_rvalue_reference_t iter_common_reference_t (C++20)(C++20)(C++20)(C++20)(C++20) | 计算迭代器的关联类型 (别名模板)