9struct enumerate_t : std::ranges::view_interface<enumerate_t<Rng>> {
 
   16    using begin_t = 
decltype(std::ranges::begin(std::as_const(
rng)));
 
   17    using end_t   = 
decltype(std::ranges::end(std::as_const(
rng)));
 
   28        using index_t = std::ranges::range_difference_t<Rng>;
 
 
 
auto enumerate(Rng &&rng)
 
std::tuple< index_t, decltype(*it)> value_type
 
friend bool operator==(sentinel_t s, const iter_t &i)
 
friend bool operator!=(sentinel_t s, const iter_t &i)
 
std::ranges::range_difference_t< Rng > index_t
 
bool operator!=(sentinel_t s) const
 
value_type operator*() const
 
std::ptrdiff_t difference_type
 
bool operator==(sentinel_t s) const
 
iter_t operator++(int) const
 
auto begin() const -> std::input_or_output_iterator auto
 
decltype(std::ranges::end(std::as_const(rng))) end_t
 
decltype(std::ranges::begin(std::as_const(rng))) begin_t