Namespaces
Variants

std::ranges::common_range

De es.cppreference.net
 
 
Biblioteca de rangos
Adaptadores de rangos
 
Definido en el encabezado <ranges>
template< class T >
concept common_range =
    ranges::range<T> && std::same_as<ranges::iterator_t<T>, ranges::sentinel_t<T>>;
(desde C++20)

El concepto common_range es un refinamiento de range para el cual std::ranges::begin() y std::ranges::end() retornan el mismo tipo (por ejemplo, todos los contenedores de la biblioteca estándar).

Ejemplo

#include <ranges>
struct A
{
    char* begin();
    char* end();
};
static_assert( std::ranges::common_range<A> );
struct B
{
    char* begin();
    bool end();
};  // no es un common_range: begin/end tienen tipos diferentes
static_assert( not std::ranges::common_range<B> );
struct C
{
    char* begin();
};  // no es un common_range, ni siquiera un range: no tiene end()
static_assert( not std::ranges::common_range<C> );
int main() {}

Véase también

convierte una view en un common_range
(plantilla de clase) (objeto adaptador de rango)