Namespaces
Variants

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

From cppreference.net
Ranges library
Range adaptors
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 適用対象 公開時の動作 正しい動作
LWG 3714
( P2711R1 )
C++20 the multi-parameter constructor was not explicit made explicit