Namespaces
Variants

std::ranges::drop_view<V>::drop_view

De es.cppreference.net
 
 
Biblioteca de rangos
Adaptadores de rango
 
 
drop_view() requires std::default_initializable<V> = default;
(1) (desde C++20)
constexpr explicit drop_view( V base, ranges::range_difference_t<V> count );
(2) (desde C++20)

Construye un drop_view.

1) Constructor por defecto. Inicializa por valor la vista subyacente base_ e inicializa el conteo count_ a 0. Después de la construcción, base() devuelve una copia de V() y size() es igual al tamaño de la vista subyacente.
2) Inicializa la vista subyacente base_ con std::move(base) y el conteo count_ con count. Después de la construcción, base() devuelve una copia de base y size() devuelve ranges::size(base) - count si el tamaño de base no es menor que count, o 0 en caso contrario.

Parámetros

base - la vista subyacente
count - número de elementos a omitir

Ejemplo

#include <algorithm>
#include <array>
#include <iostream>
#include <iterator>
#include <ranges>
int main()
{
    constexpr std::array hi{'H', 'e', 'l', 'l', 'o', ',',
                            ' ', 'C', '+', '+', '2', '0'};
    std::ranges::for_each(hi, [](const char c){ std::cout << c; });
    std::cout << '\n';
    constexpr auto n = std::distance(hi.cbegin(), std::ranges::find(hi, 'C'));
    auto cxx = std::ranges::drop_view{hi, n};
    std::ranges::for_each(cxx, [](const char c){ std::cout << c; });
    std::cout << '\n';
}

Salida:

Hello, C++20
C++20

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 3714
( P2711R1 )
C++20 el constructor multiparámetro no era explicit hecho explicit