Namespaces
Variants

std::ranges::sized_range, std::ranges::disable_sized_range

De es.cppreference.net
 
 
Biblioteca de rangos
Adaptadores de rangos
 
Definido en el encabezado <ranges>
template< class T >
concept sized_range = ranges::range<T> &&
    requires(T& t) {
        ranges::size(t);
    };
(1) (desde C++20)
(hasta C++26)
template< class T >
concept sized_range = ranges::approximately_sized_range<T> &&
    requires(T& t) {
        ranges::size(t);
    };
(desde C++26)
template< class >
constexpr bool disable_sized_range = false;
(2) (desde C++20)
1) El concepto sized_range especifica los requisitos de un range(hasta C++26)approximately_sized_range(desde C++26) tipo que conoce su tamaño en tiempo constante mediante la función size.
2) El disable_sized_range existe para permitir el uso de tipos de rango que proporcionan una función size (ya sea como miembro o como no miembro) pero que de hecho no modelan sized_range. Los usuarios pueden especializar disable_sized_range para tipos definidos por programa sin cualificación cv. Dichas especializaciones deberán ser utilizables en expresiones constantes y tener tipo const bool.

Requisitos semánticos

1) Dado un lvalue t de tipo std:: remove_reference_t < T > , T modela sized_range solo si

Notas

disable_sized_range no puede utilizarse para excluir un rango cuyos iterador y centinela satisfacen sized_sentinel_for ; std::disable_sized_sentinel_for debe utilizarse en su lugar.

disable_sized_range no puede especializarse para tipos de array o tipos de referencia.

Macro de prueba de características Valor Std Característica
__cpp_lib_ranges_reserve_hint 202502L (C++26) ranges::approximately_sized_range y ranges::reserve_hint

Ejemplo

#include <forward_list>
#include <list>
#include <ranges>
static_assert
(
    std::ranges::sized_range<std::list<int>> and
    not std::ranges::sized_range<std::forward_list<int>>
);
int main() {}

Véase también

especifica un rango cuyo tipo de iterador satisface random_access_iterator
(concepto)
especifica un rango cuyo tipo de iterador satisface contiguous_iterator
(concepto)