25#ifndef MYSQL_HARNESS_STDX_RANGES_ENUMERATE_H
26#define MYSQL_HARNESS_STDX_RANGES_ENUMERATE_H
86 using Base = std::conditional_t<Const, const V, V>;
92 using reference = std::tuple<index_type, range_reference_t<Base>>;
93 using value_type = std::tuple<index_type, range_value_t<Base>>;
96 : pos_{pos}, current_{
std::move(current)} {}
109 constexpr decltype(
auto)
operator*()
const {
139template <class T, class TIter = decltype(std::begin(std::declval<T>())),
140 class = decltype(
std::
end(std::declval<T>()))>
148namespace views = ranges::views;
std::input_iterator_tag iterator_category
Definition: ranges.h:89
size_t index_type
Definition: ranges.h:91
constexpr iterator & operator++()
Definition: ranges.h:102
std::tuple< index_type, range_reference_t< Base > > reference
Definition: ranges.h:92
iterator_t< Base > current_
Definition: ranges.h:116
index_type pos_
Definition: ranges.h:114
std::tuple< index_type, range_value_t< Base > > value_type
Definition: ranges.h:93
constexpr bool operator!=(const iterator &other) const
Definition: ranges.h:98
std::conditional_t< Const, const V, V > Base
Definition: ranges.h:86
constexpr iterator(iterator_t< Base > current, index_type pos)
Definition: ranges.h:95
enumerate_view over a range.
Definition: ranges.h:58
constexpr auto end() const
Definition: ranges.h:76
V Base
Definition: ranges.h:60
Base base_
Definition: ranges.h:62
constexpr enumerate_view(V base)
Definition: ranges.h:72
constexpr auto begin() const
Definition: ranges.h:74
stdx::iter_value_t< iterator< true > > value_type
Definition: ranges.h:68
constexpr enumerate_view()=default
void * begin(THD *thd, const TABLE *table, size_t data_size, size_t memory, size_t num_threads) noexcept
Definition: bulk_data_service.cc:1533
Cursor end()
A past-the-end Cursor.
Definition: rules_table_service.cc:191
Definition: varlen_sort.h:174
constexpr auto enumerate(T &&iterable)
Definition: ranges.h:141
stdx::iter_value_t< ranges::iterator_t< R > > range_value_t
Definition: ranges.h:45
enumerate_view(R &&) -> enumerate_view< R >
decltype(std::begin(std::declval< T & >())) iterator_t
Definition: ranges.h:42
stdx::iter_reference_t< ranges::iterator_t< R > > range_reference_t
Definition: ranges.h:48
typename indirectly_readable_traits< stdx::remove_cvref_t< T > >::value_type iter_value_t
Definition: iterator.h:131
typename impl::iter_reference< stdx::remove_cvref_t< T > >::reference iter_reference_t
Definition: iterator.h:135