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

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

πŸ’– NAME πŸ’–

okay so bestie, this page is for std::ranges::join_view::iterator::iterator β€” and yes, the NAME section says std::ranges::join_view::iterator::iterator again πŸ’…. We're in the C++ Standard Libary manual, and the whole vibe is: construct an iterator ✨


✨ Synopsis ✨

Here's the signature lineup, no cap:

/*iterator*/() requires std::default_initializable<OuterIter> &&
  std::default_initializable<InnerIter> = default;
(1) (since C++20)

constexpr /*iterator*/( Parent& parent, OuterIter outer );
(2) (since C++20)

constexpr /*iterator*/( /*iterator*/<!Const> i )
  requires Const &&
    std::convertible_to<ranges::iterator_t<V>, OuterIter> &&
    std::convertible_to<ranges::iterator_t<InnerRng>, InnerIter>;
(3) (since C++20)

Construct an iterator. πŸ› οΈβœ¨ That's the whole assignment.

  1. Default constructor 🐣 β€” value-initializes the underlying iterators, and initializes the pointer to parent ranges::join_view with nullptr.
  2. Parent + outer constructor 🌱 β€” initializes the underlying outer_ iterator with std::move(outer), and the pointer to parent parent_ with std::addressof(parent); then calls satisfy().
  3. Conversion constructor πŸ¦‹ β€” conversion from /*iterator*/<false> to /*iterator*/<true>. Move constructs the underlying iterators outer_ with std::move(i.outer_), inner_ with std::move(i.inner_), and the underlying pointer to parent parent_ with i.parent_.

πŸŽ€ Parameters πŸŽ€

  • parent β€” a (possibly const-qualified) ranges::join_view
  • outer β€” an iterator into (possibly const-qualified) ranges::iterator_t<Base>
  • i β€” an /*iterator*/<false>

🫢 Example 🫢

This section is incomplete Reason: no example 😭

🏷️ Category 🏷️

  • * Todo no example

okay bestie, that's the whole page πŸ’– source/version/date sign-off: http://cppreference.com Β· 2024.06.10 Β· slay βœ¨πŸ‘‘

πŸ“¦ where this page comes from