std::ranges::iterator_t, std::ranges::const_iterator_t, std::ranges::sentinel_t, std::ranges::const_sentinel_t
С ru.cppreference.net
| Определён в заголовке <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) |
1) Используется для получения типа итератора типа
T.3) Используется для получения типа дозорного типа диапазона
R.4) Используется для получения типа константного дозорного типа диапазона
R.Параметры шаблона
| T | - | тип, который может использоваться в std::ranges::begin |
| R | - |
тип
range
или тип
sized_range
|
Примечания
iterator_t
может применяться к типам, не являющимся диапазонами, например, к массивам с неизвестной границей.
Отчеты о дефектах
Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| 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)
|
вычисляет связанные типы итератора
(псевдоним шаблона) |
|
(C++20)
(C++20)
(C++20)
|
получает типы размера, разности и значения диапазона
(псевдоним шаблона) |
|
(C++20)
(C++23)
(C++20)
(C++20)
|
получает ссылочные типы диапазона
(псевдоним шаблона) |