21template<concepts::InputContainer View, concepts::IndirectUnaryPredicate<meta::ContainerIterator<View>> Pred>
22requires(concepts::View<View> && concepts::Object<Pred>)
32 meta::Conditional<concepts::BidirectionalIterator<Iter>, BidirectionalIteratorTag,
33 meta::Conditional<concepts::ForwardIterator<Iter>, ForwardIteratorTag,
42 : m_parent(util::addressof(parent)), m_base(util::move(
base)) {}
44 constexpr auto base()
const& -> Iter
const& {
return m_base; }
45 constexpr auto base() && -> Iter {
return util::move(m_base); }
47 constexpr auto operator*()
const ->
decltype(
auto) {
return *m_base; }
48 constexpr auto operator->()
const -> Iter
55 constexpr void advance_one() {
57 util::ref(m_parent->m_predicate.value()));
60 constexpr void back_one()
69 constexpr friend auto operator==(Iterator
const& a, Iterator
const& b) ->
bool {
return a.base() == b.base(); }
75 constexpr friend void tag_invoke(Iterator
const& a, Iterator
const& b)
106 constexpr auto base() && ->
View {
return util::move(m_base); }
108 constexpr auto pred() const -> Pred const& {
return m_predicate.value(); }
110 constexpr auto begin() -> Iterator {
114 if (!m_cache.value.has_value()) {
117 return Iterator(*
this, m_cache.value.value());
135template<
typename Con,
typename Pred>
Definition filter_view.h:23
constexpr auto begin() -> Iterator
Definition filter_view.h:110
constexpr FilterView(View base, Pred predicate)
Definition filter_view.h:98
constexpr auto base() const &-> View requires(concepts::CopyConstructible< View >)
Definition filter_view.h:101
constexpr auto pred() const -> Pred const &
Definition filter_view.h:108
constexpr auto end()
Definition filter_view.h:121
constexpr auto base() &&-> View
Definition filter_view.h:106
Definition sentinel_extension.h:10
Definition view_interface.h:26
Definition rebindable_box.h:42
Definition bidirectional_iterator.h:8
Definition common_container.h:10
Definition operations.h:40
Definition operations.h:27
Definition forward_container.h:8
Definition forward_iterator.h:10
Definition indirectly_swappable.h:7
Definition any_storable.h:9
constexpr auto iterator_move
Definition iterator_move.h:56
constexpr auto move
Definition move.h:38
FilterView(Con &&, Pred) -> FilterView< meta::AsView< Con >, Pred >
constexpr auto find_if
Definition find_if.h:31
constexpr auto operator==(MoveIterator< Iter > const &a, MoveIterator< U > const &b) -> bool
Definition move_iterator.h:85
constexpr auto iterator_swap
Definition iterator_swap.h:49
constexpr auto end
Definition end.h:47
auto tag_invoke(types::Tag< util::deduce_create >, InPlaceTemplate< NodeHashMap >, Con &&) -> NodeHashMap< meta::TupleElement< T, 0 >, meta::TupleElement< T, 1 > >
constexpr auto invoke
Definition invoke.h:100
di::meta::Decay< decltype(T)> Tag
Definition tag_invoke.h:28
constexpr auto ref
Definition reference_wrapper.h:98
Definition iterator_base.h:14