std::ranges...ew::iterator(3)
π NAME π
okay so this is the page for std::ranges::join_with_view::iterator, and it lives in the C++ Standard Libary manual, section 3. β¨ Itβs the iterator situation for join_with_view, and the actual star of the show is an exposition-only class template called /*iterator*/. π
πΈ Synopsis πΈ
template< bool Const > (since C++23)
class /*iterator*/ (exposition only*)
The return type of join_with_view::begin, and of join_with_view::end when both the outer range V and the inner range ranges::range_reference_t<V> satisfy common_range and the parent join_with_view is a forward_range.
If either V or Pattern is not a simple view, Const is true for iterators returned from the const overloads, and false otherwise. If V and Pattern are simple views, Const is true if and only if ranges::range_reference_t<V> is a reference. π«Ά
π Member types π
okay bestie, hereβs the whole member-type cast β no crumbs left behind:
Parentβconst join_view<V>ifConstistrue, otherwisejoin_view<V>(exposition-only member type*)Baseβconst VifConstistrue, otherwiseV(exposition-only member type*)InnerBaseβranges::range_reference_t<Base>(exposition-only member type*)PatternBaseβconst PatternifConstistrue, otherwisePattern(exposition-only member type*)iterator_conceptβ one of these, depending on the vibe check:std::bidirectional_iterator_tag, if:ranges::range_reference_t<Base>is a reference type,Base,InnerBaseandPatternBaseeach modelbidirectional_range,- and
InnerBaseandPatternBaseeach modelcommon_range;
std::forward_iterator_tag, if:ranges::range_reference_t<Base>is a reference type, andBaseandInnerBaseeach modelforward_range;
std::input_iterator_tagotherwise.
iterator_categoryβ defined only ifiterator::iterator_concept(see above) denotesstd::forward_iterator_tag. LetOUTERCbestd::iterator_traits<ranges::iterator_t<Base>>::iterator_category,INNERCbestd::iterator_traits<ranges::iterator_t<InnerBase>>::iterator_category, andPATTERNCbestd::iterator_traits<ranges::iterator_t<PatternBase>>::iterator_category.std::input_iterator_tag, ifstd::common_reference_t<ranges::range_reference_t<InnerBase>, ranges::range_reference_t<PatternBase>>is not a reference type;std::bidirectional_iterator_tag, if:OUTERC,INNERC, andPATTERNCeach modelstd::derived_from<std::bidirectional_iterator_tag>andranges::range_reference_t<Base>andPatternBaseeach modelcommon_range;
std::forward_iterator_tag, ifOUTERC,INNERC, andPATTERNCeach modelstd::derived_from<std::forward_iterator_tag>;std::input_iterator_tagotherwise.
value_typeβstd::common_type_t<ranges::range_value_t<InnerBase>, ranges::range_value_t<PatternBase>>difference_typeβstd::common_type_t<ranges::range_difference_t<Base>, ranges::range_difference_t<InnerBase>, ranges::range_difference_t<PatternBase>>
π Member functions π
constructorβ constructs an iterator (public member function) (C++23)operator*β accesses the element (public member function) (C++23)operator++,operator++(int),operator--,operator--(int)β advances or decrements the underlying iterator (public member function) (C++23)
π¦ Non-member functions π¦
operator==β compares the underlying iterators (function) (C++23)iter_moveβ casts the result of dereferencing the underlying iterator to its associated rvalue reference type (function) (C++23)iter_swapβ swaps the objects pointed to by two underlying iterators (function) (C++23)
and thatβs the whole page, bestie π«Ά source: http://cppreference.com, page date: 2024.06.10, for std::ranges...ew::iterator(3). π
π¦ where this page comes from
- nixpkgs unstable: stdman 2024.07.05
- opensuse-leap 16.0: stdman 2024.07.05-bp160.1.9 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms