std::ranges::chunk_by_view<V,Pred>::find_next, std::ranges::chunk_by_view<V,Pred>::find_prev
From cppreference.com
                    
                                        
                    < cpp | ranges | chunk by view
                    
                                                            
                    
std::ranges::chunk_by_view::next
|   constexpr ranges::iterator_t<V> /*find-next*/( ranges::iterator_t<V> current ); // exposition only  | 
(since C++23) | |
Finds the next chunk.
Let
base_ and
pred_ be the appropriate underlying (exposition-only) data-members of chunk_by_view.
Equivalent to
return ranges::next ( ranges::adjacent_find ( current, ranges::end(base_), std::not_fn(std::ref(*pred_)) ), 1, ranges::end(base_) );
The behavior is undefined if pred_.has_value() is false before the call to this function.
Used in the following non-static member functions:
-  ranges::chunk_by_view
::iterator::operator++ 
Parameters
| current | - | the iterator to current element in adapted view | 
std::ranges::chunk_by_view::prev
|   constexpr iterator_t<V>     /*find-prev*/( ranges::iterator_t<V> current )    // exposition only  | 
(since C++23) | |
Finds the previous chunk.
Let
base_ and
pred_ be the appropriate underlying (exposition-only) data-members of chunk_by_view.
Returns an iterator i in the range [ranges::begin(base_), current) such that:
- ranges::adjacent_find(i, current, std::not_fn(std::ref(*pred_))) is equal to current, and
 -  if 
iis not equal to ranges::begin(base_), then bool(std::invoke(*pred_, *ranges::prev(i), *i)) is false. 
The behavior is undefined if before the call to this function current == ranges::begin(base_) or pred_.has_value() != true.
Used in the following non-static member functions:
-  ranges::chunk_by_view
::iterator::operator-- 
Parameters
| current | - | the iterator to current element in adapted view |