Namespaces
Variants

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

От ru.cppreference.net
 
 
Библиотека диапазонов
Адаптеры диапазонов
 
 
drop_view() requires std::default_initializable<V> = default;
(1) (начиная с C++20)
constexpr explicit drop_view( V base, ranges::range_difference_t<V> count );
(2) (начиная с C++20)

Создаёт объект drop_view.

1) Конструктор по умолчанию. Инициализирует значением базовое представление base_ и инициализирует счётчик count_ значением 0. После создания base() возвращает копию V(), а size() равен размеру базового представления.
2) Инициализирует базовое представление base_ значением std::move(base) и счётчик count_ значением count. После создания base() возвращает копию base, а size() возвращает ranges::size(base) - count, если размер base не меньше count, или 0 в противном случае.

Параметры

base - базовое представление
count - количество пропускаемых элементов

Пример

#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';
}

Вывод:

Hello, C++20
C++20

Отчёты о дефектах

Следующие отчеты об изменениях в поведении, содержащие описания дефектов, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Applied to Behavior as published Correct behavior
LWG 3714
( P2711R1 )
C++20 конструктор с несколькими параметрами не был explicit сделан explicit