std::ranges...ew::iterator(3)

πŸ“¦ version 2024.07.05, in nixpkgs unstable, opensuse-leap 16.0

🌸 NAME 🌸

std::ranges::enumerate_view::iterator β€” std::ranges::enumerate_view::iterator

okay so bestie, we're deep in the C++ Standard Libary manual, page std::ranges...ew::iterator(3), and this one is all about the iterator type for enumerate_view. slay πŸ’…


✨ Synopsis ✨

template< bool Const >  (since C++23)
class /* iterator */    (exposition only*)

It's the return type of enumerate_view::begin, and also of enumerate_view::end when the underlying view V is a common_range.

The type /* iterator */<true> is returned by the const-qualified overloads. The type /* iterator */<false> is returned by the non-const-qualified overloads. iykyk ✨


πŸŽ€ Member types πŸŽ€

  • Base (private) β€” const V if Const is true, otherwise V. (exposition-only member type*)
  • iterator_category β€” std::input_iterator_tag
  • iterator_concept β€” it's giving one of these, in order:
    • std::random_access_iterator_tag, if Base models random_access_range.
    • Otherwise std::bidirectional_iterator_tag, if Base models bidirectional_range.
    • Otherwise std::forward_iterator_tag, if Base models forward_range.
    • Otherwise std::input_iterator_tag.
  • difference_type β€” ranges::range_difference_t<Base>
  • value_type β€” std::tuple<difference_type, ranges::range_value_t<Base>>
  • reference-type (private) β€” std::tuple<difference_type, ranges::range_reference_t<Base>> (exposition-only member type*)

πŸ¦‹ Data members πŸ¦‹

  • current_ (private) β€” an iterator to the current element of type ranges::iterator_t<Base> (exposition-only member object*)
  • pos_ (private) β€” a current index of type difference_type (exposition-only member object*)

πŸ’… Member functions πŸ’…

  • constructor (C++23) β€” constructs an iterator (public member function)
  • base (C++23) β€” returns an iterator to current element (public member function)
  • index (C++23) β€” returns current index (public member function)
  • operator* (C++23) β€” accesses the element (public member function)
  • operator[] (C++23) β€” accesses an element by index (public member function)
  • operator++, operator++(int), operator--, operator--(int), operator+=, operator-= (C++23) β€” advances or decrements the underlying iterator (public member function)

🌈 Non-member functions 🌈

  • operator==, operator<=> (C++23) β€” compares the underlying iterators (function)
  • operator+, operator- (C++23) β€” performs iterator arithmetic (function)
  • iter_move (C++23) β€” casts the result of dereferencing the underlying iterator to its associated rvalue reference type (function)

πŸ“ Example πŸ“

This section is incomplete. Reason: no example

not me waiting for an example like it's a text back 😭


πŸ“š References πŸ“š

  • C++23 standard (ISO/IEC 14882:2023):
  • 26.7.23.3 Class template enumerate_view::iterator [range.enumerate.iterator]

🧚 Category: 🧚

  • Todo no example

mwah πŸ’‹ β€” source: http://cppreference.com, version/date: 2024.06.10, page: std::ranges...ew::iterator(3). bye bestie 🫢

πŸ“¦ where this page comes from