31template<concepts::InputContainer Con>
41 :
public IteratorBase<Iterator, InputIteratorTag, meta::ContainerValue<Con>, meta::ContainerSSizeType<Con>> {
46 : m_parent(di::addressof(parent)), m_iterator(
di::begin(parent.m_container)) {}
49 Iterator(Iterator&&) =
default;
50 auto operator=(Iterator&&) -> Iterator& =
default;
52 constexpr auto base()
const& -> It
const& {
return m_iterator; }
53 constexpr auto base() && -> It {
return di::move(m_iterator); }
55 constexpr auto operator*()
const -> Reference& {
57 if (!m_parent->m_last_value) {
60 return **m_parent->m_last_value;
62 if (!m_parent->m_last_value) {
65 return *m_parent->m_last_value;
69 constexpr void advance_one() {
71 m_parent->m_last_value.reset();
98 constexpr auto base()
const -> Sent {
return m_sentinel; }
100 constexpr auto equals(Iterator
const& it)
const ->
bool {
return m_sentinel == it.base(); }
113 constexpr auto base() const& -> Con
114 requires(
concepts::CopyConstructible<Con>)
118 constexpr auto base() && -> Con {
return di::move(m_container); }
120 constexpr auto begin() {
return Iterator(*
this); }
122 constexpr auto end() {
return Sentinel(*
this); }
127 return m_container.size();
130 requires(
concepts::SizedContainer<Con const>)
132 return m_container.size();
constexpr auto end()
Definition cache_last_view.h:122
constexpr auto size() const
Definition cache_last_view.h:129
constexpr CacheLastView(Con container)
Definition cache_last_view.h:111
constexpr auto size()
Definition cache_last_view.h:124
constexpr auto base() &&-> Con
Definition cache_last_view.h:118
constexpr auto begin()
Definition cache_last_view.h:120
constexpr auto base() const &-> Con requires(concepts::CopyConstructible< Con >)
Definition cache_last_view.h:113
Definition sentinel_base.h:13
Definition view_interface.h:26
Definition non_propagating_cache.h:9
constexpr auto emplace_deref(I const &it) -> T &requires(
Definition non_propagating_cache.h:36
Definition operations.h:27
Definition indirectly_swappable.h:7
Definition sized_container.h:8
Definition any_storable.h:9
constexpr auto as_lvalue(T &&value) -> T &
Definition cache_last_view.h:26
constexpr auto iterator_move
Definition iterator_move.h:56
constexpr auto move
Definition move.h:38
constexpr auto iterator_swap
Definition iterator_swap.h:49
di::meta::Decay< decltype(T)> Tag
Definition tag_invoke.h:28
Definition zstring_parser.h:9
constexpr tag_invoke_detail::TagInvokeFn tag_invoke
Definition tag_invoke.h:22
constexpr auto end
Definition end.h:47
constexpr auto begin
Definition begin.h:44
Definition iterator_base.h:14