Scroll to navigation

std::ranges::drop_while_view::drop_while_view(3) C++ Standard Libary std::ranges::drop_while_view::drop_while_view(3)

NAME

std::ranges::drop_while_view::drop_while_view - std::ranges::drop_while_view::drop_while_view

Synopsis


drop_while_view() requires std::default_initializable<V> &&
std::default_initializable<Pred> = (1) (since C++20)
default;
constexpr explicit drop_while_view( V base, Pred pred ); (2) (since C++20)


Constructs a drop_while_view.


1) Default constructor. Value-initializes the underlying view and the predicate.
2) Move constructs the underlying view from base and the predicate from pred.

Parameters


base - underlying view
pred - predicate

Example

// Run this code


#include <array>
#include <iostream>
#include <ranges>


int main()
{
constexpr std::array data{0, -1, -2, 3, 1, 4, 1, 5};


auto view = std::ranges::drop_while_view
{
data, [](int x) { return x <= 0; }
};


for (int x : view)
std::cout << x << ' ';
std::cout << '\n';
}

Output:


3 1 4 1 5


Defect reports


The following behavior-changing defect reports were applied retroactively to
previously published C++ standards.


DR Applied to Behavior as published Correct behavior
LWG 3714 C++20 the multi-parameter constructor was made explicit
(P2711R1) not explicit
if Pred is not
default_initializable, the default the drop_while_view is also
P2325R3 C++20 constructor not default_initializable
constructs a drop_while_view which
does not contain an Pred

2024.06.10 http://cppreference.com