25template<concepts::ForwardContainer View, concepts::IndirectBinaryPredicate<meta::ContainerIterator<View>> Pred>
26requires(concepts::View<View> && concepts::Object<Pred>)
36 meta::Conditional<concepts::BidirectionalIterator<Iter>, BidirectionalIteratorTag, ForwardIteratorTag>,
42 : m_parent(util::addressof(parent)), m_current(util::move(current)), m_next(util::move(
next)) {}
49 constexpr auto operator*()
const ->
decltype(
auto) {
53 constexpr void advance_one() {
55 m_next = m_parent->find_next(m_current);
58 constexpr void back_one()
62 m_current = m_parent->find_prev(m_next);
66 constexpr friend auto operator==(Iterator
const& a, Iterator
const& b) ->
bool {
67 return a.m_current == b.m_current;
89 constexpr auto base() && ->
View {
return util::move(m_base); }
91 constexpr auto pred() const -> Pred const& {
return m_predicate.value(); }
93 constexpr auto begin() -> Iterator {
109 constexpr auto find_next(Iter current) -> Iter {
115 constexpr auto find_prev(Iter current) -> Iter
125 util::RebindableBox<Pred> m_predicate;
126 util::NonPropagatingCache<Iterator> m_cache;
129template<
typename Con,
typename Pred>
Definition chunk_by_view.h:27
constexpr auto base() const &-> View requires(concepts::CopyConstructible< View >)
Definition chunk_by_view.h:84
constexpr auto begin() -> Iterator
Definition chunk_by_view.h:93
constexpr auto pred() const -> Pred const &
Definition chunk_by_view.h:91
constexpr auto base() &&-> View
Definition chunk_by_view.h:89
constexpr ChunkByView(View base, Pred predicate)
Definition chunk_by_view.h:81
constexpr auto end()
Definition chunk_by_view.h:100
Definition view_interface.h:26
Definition bidirectional_container.h:8
Definition bidirectional_iterator.h:8
Definition common_container.h:10
Definition operations.h:27
Definition any_storable.h:9
constexpr auto reverse
Definition reverse.h:52
constexpr auto prev
Definition prev.h:28
constexpr auto next
Definition next.h:35
constexpr auto adjacent_find
Definition adjacent_find.h:37
constexpr auto reconstruct
Definition reconstruct.h:75
constexpr auto move
Definition move.h:38
View(Iter, Sent) -> View< Iter, Sent >
constexpr auto operator==(MoveIterator< Iter > const &a, MoveIterator< U > const &b) -> bool
Definition move_iterator.h:85
constexpr auto default_sentinel
Definition default_sentinel.h:6
ChunkByView(Con &&, Pred) -> ChunkByView< meta::AsView< Con >, Pred >
constexpr auto end
Definition end.h:47
constexpr auto begin
Definition begin.h:44
constexpr auto not_fn(F &&function)
Definition not_fn.h:55
constexpr auto flip(F &&function)
Definition flip.h:54
constexpr auto ref
Definition reference_wrapper.h:98
constexpr auto in_place_type
Definition in_place_type.h:12
Definition default_sentinel.h:4
Definition iterator_base.h:14