19template<concepts::InputContainer View, concepts::MoveConstructible F>
20requires(concepts::View<View> && concepts::Object<F> && concepts::Invocable<F&, meta::ContainerReference<View>> &&
21 concepts::CanReference<meta::InvokeResult<F&, meta::ContainerReference<View>>>)
24 template<
bool is_const>
27 template<
bool is_const>
30 template<
bool is_const>
33 template<
bool is_const>
36 template<
bool is_const>
39 template<
bool is_const>
42 template<
bool is_const>
45 template<
bool is_const>
46 class Sentinel :
public SentinelExtension<Sentinel<is_const>, Sent<is_const>, Iterator<is_const>, Iter<is_const>> {
51 constexpr Sentinel() =
default;
53 constexpr explicit Sentinel(Sent<is_const> sentinel) : Base(sentinel) {}
55 constexpr Sentinel(Sentinel<!is_const> other)
57 : Base(other.
base()) {}
60 template<
bool is_const>
63 meta::RemoveCVRef<meta::InvokeResult<meta::MaybeConst<is_const, F>&,
64 meta::IteratorReference<Iter<is_const>>>>> {
74 constexpr explicit Iterator(Parent<is_const>& parent, Iter<is_const> iterator)
75 : Base(util::move(iterator)), m_parent(util::addressof(parent)) {}
77 constexpr Iterator(Iterator<!is_const> other)
79 : Base(util::move(other.
base())), m_parent(other.m_parent) {}
81 constexpr auto operator*()
const ->
decltype(
auto) {
87 friend class Iterator;
91 return util::move(*self);
97 Parent<is_const>* m_parent {
nullptr };
113 constexpr auto base() && ->
View {
return util::move(m_base); }
130 constexpr auto end() const
136 constexpr auto end() const
160template<
typename Con,
typename F>
Definition iterator_extension.h:19
constexpr auto base() const &-> Iter const &
Definition iterator_extension.h:30
Definition sentinel_extension.h:10
constexpr auto base() const -> Sent
Definition sentinel_extension.h:16
Definition view_interface.h:26
Definition rebindable_box.h:42
Definition common_container.h:10
Definition operations.h:99
Definition operations.h:27
Definition sized_container.h:8
Definition any_storable.h:9
TransformView(Con &&, F) -> TransformView< meta::AsView< Con >, F >
constexpr auto move
Definition move.h:38
constexpr auto size
Definition size.h:54
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 begin
Definition begin.h:44
constexpr auto invoke
Definition invoke.h:100
di::meta::Decay< decltype(T)> Tag
Definition tag_invoke.h:28