Espacios de nombres
Variantes

std::ranges::range

De cppreference.com
 
 
Biblioteca de rangos
Adaptadores de rangos
 
<tbody> </tbody>
Definido en el archivo de encabezado <ranges>
template< class T > concept range = requires(T& t) { ranges::begin(t); // conservador de la igualdad para iteradores de avance ranges::end (t); };

El concepto range define los requisitos de un tipo que permite la iteración sobre sus elementos proporcionando un iterador y un centinela que denotan los elementos en el rango.

Requisitos semánticos

Dada una expresión E tal que decltype((E)) es T, T modela a range solo si

  • [ranges::begin(E), ranges::end(E)) denota un rango y
  • tanto ranges::begin(E) como ranges::end(E) se amortizan en tiempo constante y no alteran el valor de E de una manera observable para las expresiones que preservan la igualdad, y
  • si el tipo de ranges::begin(E) modela a forward_iterator, ranges::begin(E) es conservador de la igualdad (en otras palabras, los iteradores de avance admiten algoritmos de múltiples pasadas)

Nota: En la definición anterior, las expresiones requeridas ranges::begin(std::forward<T>(t)) y ranges::end(std::forward<T>(t)) no requieren variaciones de expresión implícita.