Пространства имён
Варианты
Действия

no-throw-input-iterator, no-throw-forward-iterator, no-throw-sentinel-for, no-throw-input-range, no-throw-forward-range

Материал из cppreference.com
 
 
Библиотека утилит
Языковая поддержка
Поддержка типов (базовые типы, RTTI)
Макросы тестирования функциональности библиотеки (C++20)    
Управление динамической памятью
Программные утилиты
Поддержка сопрограмм (C++20)
Вариативные функции
Трёхстороннее сравнение (C++20)
(C++20)
(C++20)(C++20)(C++20)(C++20)(C++20)(C++20)
Общие утилиты
Дата и время
Функциональные объекты
Библиотека форматирования (C++20)
(C++11)
Операторы отношения (устарело в C++20)
Целочисленные функции сравнения
(C++20)(C++20)(C++20)    
(C++20)
Операции обмена и типа
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
Общие лексические типы
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
Элементарные преобразования строк
(C++17)
(C++17)
 
Динамическое управление памятью
no section name
Ограниченные алгоритмы неинициализированной памяти
no section name
Поддержка сбора мусора
(C++11)(до C++23)
(C++11)(до C++23)
(C++11)(до C++23)
(C++11)(до C++23)
(C++11)(до C++23)
(C++11)(до C++23)



no section name
 
<tbody> </tbody>
template< class I > concept no-throw-input-iterator = std::input_iterator<I> && std::is_lvalue_reference_v<std::iter_reference_t<I>> && std::same_as<std::remove_cvref_t<std::iter_reference_t<I>>, std::iter_value_t<I>>;
(1) (только для пояснения*)
template< class I > concept no-throw-forward-iterator = no-throw-input-iterator<I> && std::forward_iterator<I> && no-throw-sentinel-for<I, I>;
(2) (только для пояснения*)
template< class S, class I > concept no-throw-sentinel-for = std::sentinel_for<S, I>;
(3) (только для пояснения*)
template< class R > concept no-throw-input-range = ranges::range<R> && no-throw-input-iterator<ranges::iterator_t<R>> && no-throw-sentinel-for<ranges::sentinel_t<R>, ranges::iterator_t<R>>;
(4) (только для пояснения*)
template< class R > concept no-throw-forward-range = no-throw-input-range<R> && no-throw-forward-iterator<ranges::iterator_t<R>>;
(5) (только для пояснения*)

Эти концепты, предназначенные только для описания, указывают, что никакие исключения не выбрасываются из операций, требуемых алгоритмами для итераторов, ограничителей и диапазонов.

1) Концепт no-throw-input-iterator требует, чтобы разыменование итератора давало левостороннее значение, например contiguous_iterator и LegacyForwardIterator.

Семантические требования

Как и все стандартные концепты, каждый перечисленный здесь концепт моделируется только в том случае, если моделируются все концепты, которые он включает.

1) Тип I моделирует no-throw-input-iterator только в том случае, если исключения не выбрасываются при инкрементировании, создании копированием, создании перемещением, присваивании копированием, присваивании перемещением или косвенности через допустимые итераторы.
3) Типы S и I моделируют no-throw-sentinel-for только в том случае, если исключения не выбрасываются при создании копированием, создании перемещением, присваивании копированием, присваивании перемещением или сравнении допустимых значений типа I и S.
4) Тип R моделирует no-throw-input-range только в том случае, если при вызовах ranges::begin и ranges::end для объекта типа R не генерируется исключение.

Примечание

Эти концепты позволяют некоторым операциям с итераторами и ограничителями генерировать исключения, например операциям с недопустимыми значениями.

Смотрите также

указывает, что тип является итератором ввода, то есть значения, на которые он ссылается, могут быть прочитаны, и он может быть как пре-инкрементирован, так и пост-инкрементирован
(концепт) [править]
указывает, что input_iterator является прямым итератором, поддерживающим сравнение на равенство и многопроходность
(концепт) [править]
указывает, что тип является ограничителем для типа input_or_output_iterator
(концепт) [править]
указывает диапазон, тип итератора которого соответствует input_iterator
(концепт) [править]
указывает диапазон, тип итератора которого соответствует forward_iterator
(концепт) [править]
Morty Proxy This is a proxified and sanitized view of the page, visit original site.