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
Определено в заголовке <ranges> | ||
|---|---|---|
template< class T > using iterator_t = decltype(ranges::begin(std::declval<T&>())); | (1) | (с C++20) |
template< ranges::range R > using const_iterator_t = decltype(ranges::cbegin(std::declval<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 = decltype(ranges::cend(std::declval<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++20) |
1) Используется для получения типа итератора типа
T.
3) Используется для получения типа стоп-итератора типа диапазона
R.
4) Используется для получения типа константного стоп-итератора типа диапазона
R.
6) Используется для получения типа разницы для типа итератора типа диапазона
R.
7) Используется для получения типа значения для типа итератора типа диапазона
R.
8) Используется для получения типа ссылки для типа итератора типа диапазона
R.
9) Используется для получения типа константной ссылки для типа итератора типа диапазона
R.
10) Используется для получения типа ссылки rvalue для типа итератора типа диапазона
R.
11) Используется для получения общего типа ссылки для типа итератора типа диапазона
R.Параметры шаблона
| T | - | тип, который может использоваться в std::ranges::begin |
| R | - | тип range или тип sized_range |
Примечания
iterator_t может быть применён к типам, которые не являются диапазонами, например, массивам с неизвестной границей.
Отчеты об ошибках
Следующие отчеты об ошибках, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применено к | Поведение, как опубликовано | Корректное поведение |
|---|---|---|---|
| LWG 3860 | C++20 |
range_common_reference_t отсутствовал | добавлено |
| LWG 3946 | C++23 |
const_iterator_t и const_sentinel_t были несогласованны с результатом ranges::cbegin и ranges::cend соответственно | исправлено |
См. также
|
(C++20)(C++20)(C++23)(C++20)(C++20)(C++20) | вычисляет связанные типы итератора (шаблон псевдонима) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/ranges/iterator_t