guías de deducción para std::ranges::subrange
De es.cppreference.net
| Definido en el encabezado <ranges>
|
||
template< std::input_or_output_iterator I, std::sentinel_for<I> S >
subrange(I, S) -> subrange<I, S>;
|
(1) | (desde C++20) |
template< std::input_or_output_iterator I, std::sentinel_for<I> S >
subrange(I, S, /*make-unsigned-like-t*/<std::iter_difference_t<I>>) ->
subrange<I, S, ranges::subrange_kind::sized>;
|
(2) | (desde C++20) |
template< ranges::borrowed_range<R> >
subrange(R&&) ->
subrange<ranges::iterator_t<R>, ranges::sentinel_t<R>,
(ranges::sized_range<R> ||
std::sized_sentinel_for<ranges::sentinel_t<R>,
ranges::iterator_t<R>>) ?
ranges::subrange_kind::sized : ranges::subrange_kind::unsized>;
|
(3) | (desde C++20) |
template< ranges::borrowed_range<R> >
subrange(R&&, /*make-unsigned-like-t*/<ranges::range_difference_t<R>>) ->
subrange<ranges::iterator_t<R>, ranges::sentinel_t<R>,
ranges::subrange_kind::sized>;
|
(4) | (desde C++20) |
Estas guías de deducción se proporcionan para std::ranges::subrange.
1) Deduce los argumentos de plantilla a partir del tipo de iterador y centinela. El
subrange está dimensionado si se satisface std::sized_sentinel_for<S, I>, según lo determinado por el argumento de plantilla predeterminado.2) Deduce los argumentos de plantilla a partir del tipo de iterador y centinela, mientras que el tamaño del rango está especificado. El
subrange siempre está dimensionado.3) Deduce los argumentos de plantilla a partir del tipo de rango. El
subrange está dimensionado si el tamaño se puede obtener del rango o de su iterador y centinela.4) Deduce los argumentos de plantilla a partir del tipo de rango, mientras que el tamaño del rango está especificado. El
subrange siempre está dimensionado.Para la definición de /* make-unsigned-like-t */, consulte make-unsigned-like-t .
Notas
Mientras se construye el objeto
subrange
,
- para (1,2) , el comportamiento es indefinido si el par iterador-centinela no denota un rango válido,
- para (2,4) , el comportamiento es indefinido si el tamaño dado no es 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 de C++ publicados anteriormente.
| DR | Aplicado a | Comportamiento publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 3404 | C++20 | se proporcionaron guías de deducción sin sentido de tipos similares a pair | eliminadas |