[range.take.while.overview] (original) (raw)

25 Ranges library [ranges]

25.7 Range adaptors [range.adaptors]

25.7.11 Take while view [range.take.while]

25.7.11.1 Overview [range.take.while.overview]

Given a unary predicate pred and a view r,take_while_view produces a view of the range [ranges​::​begin(r), ranges​::​find_if_not(r, pred)).

Given subexpressions E and F, the expression views​::​take_while(E, F)is expression-equivalent to take_while_view(E, F).

[Example 1: auto input = istringstream{"0 1 2 3 4 5 6 7 8 9"};auto small = [](const auto x) noexcept { return x < 5; };auto small_ints = views::istream<int>(input) | views::take_while(small);for (const auto i : small_ints) { cout << i << ' '; } auto i = 0; input >> i; cout << i; — _end example_]