Namespaces
Variants

std::ranges::subrange<I,S,K>::subrange

De es.cppreference.net
 
 
Biblioteca de rangos
Adaptadores de rangos
 
 
subrange() requires std::default_initializable<I> = default;
(1) (desde C++20)
constexpr subrange( /*convertible-to-non-slicing*/<I> auto i, S s )
    requires (!/*StoreSize*/);
(2) (desde C++20)
constexpr subrange( /*convertible-to-non-slicing*/<I> auto i, S s,
                    /*make-unsigned-like-t*/<std::iter_difference_t<I>> n )
    requires (K == ranges::subrange_kind::sized);
(3) (desde C++20)
template< /*different-from*/<subrange> R >
    requires ranges::borrowed_range<R> &&
             /*convertible-to-non-slicing*/<ranges::iterator_t<R>, I> &&
             std::convertible_to<ranges::sentinel_t<R>, S>
constexpr subrange( R&& r )
    requires (!/*StoreSize*/ || ranges::sized_range<R>);
(4) (desde C++20)
template< ranges::borrowed_range R>
    requires /*convertible-to-non-slicing*/<ranges::iterator_t<R>, I> &&
           std::convertible_to<ranges::sentinel_t<R>, S>
constexpr subrange( R&& r,
                    /*make-unsigned-like-t*/<std::iter_difference_t<I>> n )
    requires (K == ranges::subrange_kind::sized)
    : subrange{ranges::begin(r), ranges::end(r), n} {}
(5) (desde C++20)

Construye un subrange.

Para las definiciones de /*make-unsigned-like-t*/ y /*different-from*/, consulte make-unsigned-like-t y different-from respectivamente.

 Sobrecarga  Miembros de datos
begin_ end_ size_
(solo si StoreSize es true)
(1) inicializado por valor inicializado por valor inicializado con 0
(2) inicializado con std::move(i) inicializado con s N/A
(3) inicializado con n
(4) inicializado con std::move(ranges::begin(r)) inicializado con ranges::end(r) inicializado con static_cast<decltype(size_ )>
    (ranges::size(r))
(5) inicializado con n
2) Si [i, s) no es un rango válido, el comportamiento no está definido.
3) Si se cumple alguna de las siguientes condiciones, el comportamiento no está definido:
  • [i, s) no es un rango válido.
  • n == to-unsigned-like (ranges::distance(i, s)) es false.

Parámetros

i - iterador que denota el inicio del rango
s - centinela que denota el final del rango
r - rango
n - sugerencia de tamaño, debe ser igual al tamaño del rango

Ejemplo

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares publicados anteriormente de C++.

DR Aplicado a Comportamiento publicado Comportamiento correcto
P2393R1 C++20 para la sobrecarga ( 4 ) , size_ podría inicializarse con ranges:: size ( r ) , pero no siempre es
convertible implícitamente al tipo correspondiente unsigned-integer-like
se hizo la
conversión explícita