14template<concepts::InputContainer View>
15requires(concepts::View<View>)
20 template<
bool is_const>
23 template<
bool is_const>
26 template<
bool is_const>
29 template<
bool is_const>
32 template<
bool is_const>
35 template<
bool is_const>
38 template<
bool is_const>
40 :
public IteratorExtension<Iterator<is_const>, Iter<is_const>, Tuple<Index<is_const>, Value<is_const>>> {
47 constexpr explicit Iterator(Iter<is_const>
base, SSizeType<is_const> index)
48 : Base(util::move(
base)), m_index(
static_cast<Index<is_const>
>(index)) {}
50 constexpr Iterator(Iterator<!is_const> other)
52 : Base(other.
base()), m_index(other.m_index) {}
54 constexpr auto operator*()
const {
58 constexpr void advance_one() {
63 constexpr void back_one()
70 constexpr void advance_n(SSizeType<is_const> n)
78 template<
bool other_is_const>
79 friend class Iterator;
81 Index<is_const> m_index;
84 template<
bool is_const>
85 class Sentinel :
public SentinelExtension<Sentinel<is_const>, Sent<is_const>, Iterator<is_const>, Iter<is_const>> {
92 constexpr explicit Sentinel(Sent<is_const>
base) : Base(
base) {}
94 constexpr Sentinel(Sentinel<!is_const> other)
96 : Base(other.
base()) {}
111 constexpr auto base() && ->
View {
return util::move(m_base); }
129 return Iterator<false>(
container::end(m_base),
static_cast<SSizeType<false>
>(this->
size()));
135 constexpr auto end() const
139 return Iterator<false>(
container::end(m_base),
static_cast<SSizeType<true>
>(this->
size()));
161template<
typename Con>
Definition enumerate_view.h:18
constexpr auto end()
Definition enumerate_view.h:125
constexpr auto base() const &-> View requires(concepts::CopyConstructible< View >)
Definition enumerate_view.h:106
constexpr auto size() const
Definition enumerate_view.h:151
constexpr EnumerateView(View base)
Definition enumerate_view.h:104
constexpr auto size()
Definition enumerate_view.h:145
constexpr auto begin() const
Definition enumerate_view.h:119
constexpr auto end() const
Definition enumerate_view.h:135
constexpr auto begin()
Definition enumerate_view.h:113
constexpr auto base() &&-> View
Definition enumerate_view.h:111
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 tuple_forward_declaration.h:5
Definition bidirectional_iterator.h:8
Definition common_container.h:10
Definition operations.h:99
Definition operations.h:27
Definition random_access_iterator.h:12
Definition simple_view.h:11
Definition sized_container.h:8
Definition any_storable.h:9
constexpr auto move
Definition move.h:38
constexpr auto size
Definition size.h:54
constexpr auto end
Definition end.h:47
EnumerateView(Con &&) -> EnumerateView< meta::AsView< Con > >
constexpr auto begin
Definition begin.h:44
Definition enable_borrowed_container.h:9