From b8047a547659d41e6c91f3a20c8acd42326de8ea Mon Sep 17 00:00:00 2001 From: tcbrindle Date: Thu, 14 Mar 2024 16:34:27 +0000 Subject: [PATCH] Update single header --- single_include/flux.hpp | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/single_include/flux.hpp b/single_include/flux.hpp index 0ef0bbc1..7ebd0367 100644 --- a/single_include/flux.hpp +++ b/single_include/flux.hpp @@ -3377,12 +3377,22 @@ struct for_each_while_fn { if constexpr (requires { traits_t::for_each_while(seq, std::move(pred)); }) { return traits_t::for_each_while(seq, std::move(pred)); } else { - auto cur = first(seq); - while (!is_last(seq, cur)) { - if (!std::invoke(pred, read_at(seq, cur))) { break; } - inc(seq, cur); + if constexpr (multipass_sequence && bounded_sequence) { + auto cur = first(seq); + auto end = last(seq); + while (cur != end) { + if (!std::invoke(pred, read_at(seq, cur))) { break; } + inc(seq, cur); + } + return cur; + } else { + auto cur = first(seq); + while (!is_last(seq, cur)) { + if (!std::invoke(pred, read_at(seq, cur))) { break; } + inc(seq, cur); + } + return cur; } - return cur; } } };