nothrow-input-iterator, nothrow-forward-iterator, nothrow-bidirectional-iterator, no-throw-input-range, nothrow-random-access-iterator
De es.cppreference.net
template< class I >
concept /*nothrow-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) | (solo exposición*) |
template< class I >
concept /*nothrow-forward-iterator*/ =
/*nothrow-input-iterator*/<I> &&
std::forward_iterator<I> &&
/*nothrow-sentinel-for*/<I, I>;
|
(2) | (solo exposición*) |
template< class I >
concept /*nothrow-bidirectional-iterator*/ =
/*nothrow-forward-iterator*/<I> &&
std::bidirectional_iterator<I>;
|
(3) | (desde C++26) (solo exposición*) |
template< class I >
concept /*nothrow-random-access-iterator*/ =
/*nothrow-bidirectional-iterator*/<I> &&
std::random_access_iterator<I> &&
/*nothrow-sized-sentinel-for*/<I, I>;
|
(4) | (desde C++26) (solo exposición*) |
Estos conceptos de solo exposición especifican que no se lanzan excepciones de las operaciones requeridas por los algoritmos <de memoria> especializados sobre iteradores.
Para las definiciones de /*nothrow-sentinel-for*/ y /*nothrow-sized-sentinel-for*/, consulte esta página.
Requisitos semánticos
1) Un tipo
I modela nothrow-input-iterator solo si no se lanzan excepciones al incrementar, copiar construir, mover construir, copiar asignar, mover asignar, o desreferenciar iteradores válidos del tipo I.3) Un tipo
I modela nothrow-bidirectional-iterator solo si no se lanzan excepciones al decrementar iteradores válidos del tipo I.4) Un tipo
I modela nothrow-random-access-iterator solo si no se lanzan excepciones al comparar iteradores válidos del tipo I, o los operadores -, +, -=, +=, [] sobre valores válidos de tipo I y std::iter_difference_t<I>.Notas
Estos conceptos permiten que algunas operaciones sobre iteradores lancen excepciones.
Véase también
(C++20) |
especifica que un tipo es un iterador de entrada, es decir, sus valores referenciados pueden leerse y puede ser pre- y post-incrementado (concepto) |
(C++20) |
especifica que un input_iterator es un iterador hacia adelante, que soporta comparación de igualdad y paso múltiple (concepto) |
(C++20) |
especifica que un forward_iterator es un iterador bidireccional, que soporta movimiento hacia atrás (concepto) |
(C++20) |
especifica que un bidirectional_iterator es un iterador de acceso aleatorio, que soporta avance en tiempo constante y subíndice (concepto) |