no-throw-input-iterator, no-throw-forward-iterator, no-throw-sentinel-for, no-throw-input-range, no-throw-forward-range
De cppreference.com
| Definido en el archivo de encabezado <memory>
|
||
template<class I>
concept no-throw-input-iterator = // solo exposición
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) | (desde C++20) |
template<class I>
concept no-throw-forward-iterator = // solo exposición
no-throw-input-iterator<I> &&
std::forward_iterator<I> &&
no-throw-sentinel-for<I, I>;
|
(2) | (desde C++20) |
template<class S, class I>
concept no-throw-sentinel-for = std::sentinel_for<S, I>; // solo exposición
|
(3) | (desde C++20) |
template<class R>
concept no-throw-input-range = // solo exposición
ranges::range<R> &&
no-throw-input-iterator<ranges::iterator_t<R>> &&
no-throw-sentinel-for<ranges::sentinel_t<R>, ranges::iterator_t<R>>;
|
(4) | (desde C++20) |
template<class R>
concept no-throw-forward-range = // solo exposición
no-throw-input-range<R> &&
no-throw-forward-iterator<ranges::iterator_t<R>>;
|
(5) | (desde C++20) |
Estos conceptos de solo exposición especifican que no se lanzan excepciones de las operaciones requeridas por los algoritmos en iteradores, centinelas y rangos.
1) El concepto
no-throw-input-iterator requiere que desreferenciar el iterador produzca un l-valor, como contiguous_iterator y ForwardIterator.Requerimientos semánticos
Al igual que todos los conceptos estándar, todos los conceptos enumerados aquí se modelan solo si se modelan todos los conceptos que incluye.
1) Un tipo
I modela no-throw-input-iterator solo si no se lanzan excepciones de incremento, construcción de copia, construcción de movimiento, asignación de copia, asignación de movimiento o direccionamiento indirecto a través de iteradores válidos.3) Los tipos
S t I modelan no-throw-sentinel-for solo si no se lanzan excepciones desde la construcción de copia, la construcción de movimiento, la asignación de copia, la asignación de movimiento o las comparaciones entre valores válidos de tipo I y S.4) Un tipo
R modela no-throw-input-range solo si no se lanzan excepciones de las llamadas a ranges::begin y ranges::end en un objeto de tipo R.Notas
Estos conceptos permiten que algunas operaciones en iteradores y centinelas arrojen excepciones, p. ej., operaciones sobre valores inválidos.
Véase también
(C++20) |
Especifica que un tipo es un iterador de entrada, es decir, los valores a los que hace referencia se pueden leer y se pueden preincrementar y posincrementar. (concepto) |
(C++20) |
Especifica que un input_iterator es un iterador de avance, que admite la comparación de igualdad y el paso múltiple. (concepto) |
(C++20) |
Especifica que un tipo es un centinela para un tipo input_or_output_iterator. (concepto) |
(C++20) |
Especifica un rango cuyo tipo iterador satisface input_iterator. (concepto) |
(C++20) |
Especifica un rango cuyo tipo iterador satisface forward_iterator (concepto) |