26#ifndef MYSQL_HARNESS_STDX_RANGES_ENUMERATE_H
27#define MYSQL_HARNESS_STDX_RANGES_ENUMERATE_H
43using iterator_t =
decltype(std::begin(std::declval<T &>()));
87 using Base = std::conditional_t<Const, const V, V>;
93 using reference = std::tuple<index_type, range_reference_t<Base>>;
94 using value_type = std::tuple<index_type, range_value_t<Base>>;
97 : pos_{pos}, current_{
std::move(current)} {}
110 constexpr decltype(
auto)
operator*()
const {
140template <class T, class TIter = decltype(std::begin(std::declval<T>())),
141 class = decltype(
std::
end(std::declval<T>()))>
149namespace views = ranges::views;
std::input_iterator_tag iterator_category
Definition: ranges.h:90
size_t index_type
Definition: ranges.h:92
constexpr iterator & operator++()
Definition: ranges.h:103
std::tuple< index_type, range_reference_t< Base > > reference
Definition: ranges.h:93
iterator_t< Base > current_
Definition: ranges.h:117
index_type pos_
Definition: ranges.h:115
std::tuple< index_type, range_value_t< Base > > value_type
Definition: ranges.h:94
constexpr bool operator!=(const iterator &other) const
Definition: ranges.h:99
std::conditional_t< Const, const V, V > Base
Definition: ranges.h:87
constexpr iterator(iterator_t< Base > current, index_type pos)
Definition: ranges.h:96
enumerate_view over a range.
Definition: ranges.h:59
constexpr auto end() const
Definition: ranges.h:77
V Base
Definition: ranges.h:61
Base base_
Definition: ranges.h:63
constexpr enumerate_view(V base)
Definition: ranges.h:73
constexpr auto begin() const
Definition: ranges.h:75
stdx::iter_value_t< iterator< true > > value_type
Definition: ranges.h:69
constexpr enumerate_view()=default
Cursor end()
A past-the-end Cursor.
Definition: rules_table_service.cc:192
Definition: gcs_xcom_synode.h:64
constexpr auto enumerate(T &&iterable)
Definition: ranges.h:142
stdx::iter_value_t< ranges::iterator_t< R > > range_value_t
Definition: ranges.h:46
enumerate_view(R &&) -> enumerate_view< R >
decltype(std::begin(std::declval< T & >())) iterator_t
Definition: ranges.h:43
stdx::iter_reference_t< ranges::iterator_t< R > > range_reference_t
Definition: ranges.h:49
typename indirectly_readable_traits< stdx::remove_cvref_t< T > >::value_type iter_value_t
Definition: iterator.h:132
typename impl::iter_reference< stdx::remove_cvref_t< T > >::reference iter_reference_t
Definition: iterator.h:136