std::ranges::subrange<I,S,K>::subrange
De es.cppreference.net
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
| ||
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))esfalse.
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
|
Esta sección está incompleta
Razón: sin 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 |