std::ranges::iterator_t, std::ranges::const_iterator_t, std::ranges::sentinel_t, std::ranges::const_sentinel_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) |
1) Используется для получения типа итератора типа
T.
3) Используется для получения типа сентинела типа диапазона
R.
4) Используется для получения типа константного сентинела типа диапазона
R.Параметры шаблона
| T | - | тип, который можно использовать в std::ranges::begin |
| R | - | тип range или тип sized_range |
Примечания
iterator_t можно применять к типам, не являющимся диапазонами, например к массивам с неизвестной границей.
Отчёты об ошибках
Следующие отчёты об ошибках, изменяющие поведение, были ретроактивно применены к ранее опубликованным стандартам C++.
| Отчёт об ошибке | Применяется к | Опубликованное поведение | Корректное поведение |
|---|---|---|---|
| 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) | получает ссылочные типы диапазона (шаблон псевдонима) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/ranges/iterator_t