std::ranges::transform_view<V,F>::iterator
template< bool Const > class /*iterator*/ | (с C++20) (только для примера*) |
Тип возвращаемого значения transform_view::begin и transform_view::end, когда базовое представление является common_range.
Тип /*iterator*/<true> возвращается перегрузками с квалификатором const. Тип /*iterator*/<false> возвращается перегрузками без квалификатора const.
Типы членов
| Тип члена | Определение |
|---|---|
Parent (private) | const ranges::transform_view<V, F> если Const является true, в противном случае ranges::transform_view<V, F>.(только для примера*) |
Base (private) | const V если Const является true, в противном случае V.(только для примера*) |
iterator_concept | std::random_access_iterator_tag если Base моделирует random_access_range,std::bidirectional_iterator_tag если Base моделирует bidirectional_range,std::forward_iterator_tag если Base моделирует forward_range,std::input_iterator_tag в противном случае. |
iterator_category | Не определено, если Base не моделирует forward_range.В противном случае, если std::invoke_result_t<F&, ranges::range_reference_t<Base>> не является ссылкой, std::input_iterator_tag.В противном случае, пусть |
value_type | std::remove_cvref_t<std::invoke_result_t<F&, ranges::range_reference_t<Base>>> |
difference_type | ranges::range_difference_t<Base> |
Члены-данные
| Член-объект | Определение |
|---|---|
current_ (private) | Итератор в (возможно, с квалификатором const) V.(только для примера*) |
parent_ (private) | Указатель на родительский transform_view.(только для примера*) |
Члены-функции
|
(C++20) | создаёт итератор (общедоступная функция-член) |
|
(C++20) | возвращает базовый итератор (общедоступная функция-член) |
|
(C++20) | доступ к преобразованному элементу (общедоступная функция-член) |
|
(C++20) | доступ к элементу по индексу (общедоступная функция-член) |
|
(C++20) | перемещает или уменьшает базовый итератор (общедоступная функция-член) |
Функции вне класса
|
(C++20) | сравнивает базовые итераторы (функция) |
|
(C++20) | выполняет арифметические операции с итераторами (функция) |
|
(C++20) | получает ссылку типа rvalue на преобразованный элемент (функция) |
Отчёты об ошибках
Следующие исправляющие ошибки отчёты были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применено к | Поведение, как опубликовано | Корректное поведение |
|---|---|---|---|
| P2259R1 | C++20 | член iterator_category всегда определён | определён только если Base моделирует forward_range |
| LWG 3555 | C++20 | определение iterator_concept игнорирует const | учитывает |
| LWG 3798 | C++20 |
iterator_category является только для чтения, если результат преобразования — ссылка типа rvalue | может иметь более сильную категорию |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/ranges/transform_view/iterator