std::ranges:: iterator_t, std::ranges:: const_iterator_t, std::ranges:: sentinel_t, std::ranges:: const_sentinel_t
From 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)
|
получает ссылочные типы диапазона
(псевдоним шаблона) |