Namespaces
Variants

std::ranges::join_with_view<V,Pattern>:: iterator <Const>:: operator++,--

From cppreference.net
Ranges library
Range adaptors
constexpr /*iterator*/ & operator ++ ( ) ;
(1) (C++23以降)
constexpr void operator ++ ( int ) ;
(2) (C++23以降)
constexpr /*iterator*/ operator ++ ( int )

requires std:: is_reference_v < /*InnerBase*/ > &&
ranges:: forward_range < /*Base*/ > &&

ranges:: forward_range < /*InnerBase*/ > ;
(3) (C++23以降)
constexpr /*iterator*/ & operator -- ( )

requires std:: is_reference_v < /*InnerBase*/ > &&
ranges:: bidirectional_range < /*Base*/ > &&
ranges:: bidirectional_range < /*InnerBase*/ > &&
ranges:: common_range < /*InnerBase*/ > &&
ranges:: bidirectional_range < /*PatternBase*/ > &&

ranges:: common_range < /*PatternBase*/ > ;
(4) (C++23以降)
constexpr /*iterator*/ operator -- ( int )

requires std:: is_reference_v < /*InnerBase*/ > &&
ranges:: bidirectional_range < /*Base*/ > &&
ranges:: bidirectional_range < /*InnerBase*/ > &&
ranges:: common_range < /*InnerBase*/ > &&
ranges:: bidirectional_range < /*PatternBase*/ > &&

ranges:: common_range < /*PatternBase*/ > ;
(5) (C++23以降)

イテレータをインクリメントまたはデクリメントします。

1) inner iterator を以下のようにインクリメントする std:: visit ( [ ] ( auto & it ) { ++ it ; } , inner_it_  ) ; .
その後、内部イテレータと外部イテレータを以下のように調整します:
  • 内部イテレータをインクリメントした結果がパターン範囲の終端イテレータの場合、次の内部範囲の先頭を指すイテレータに設定されます。
  • 内部イテレータをインクリメントした結果が内部範囲の終端イテレータの場合、外部イテレータをインクリメントします。その後:
  • インクリメント後の外部イテレータが外部範囲の終端イテレータでない場合、内部イテレータをパターン範囲の先頭を指すイテレータに設定します。
  • そうでなく、 std:: is_reference_v < InnerBase   > true の場合、内部イテレータを 無効値 を保持するパターンイテレータに設定します。
  • 内部イテレータが終端イテレータでなくなるか、外部イテレータが終端イテレータになるまで、上記の操作を繰り返します。
2) 次と同等 ++* this ;
3) 次と同等 auto tmp = * this ;
++* this ;
return tmp ;
.
4) 外側のイテレータが外側範囲の終端イテレータである場合、それをデクリメントし、内側イテレータを最後の内側範囲の終端イテレータに設定する。それ以外の場合は何もしない。
その後、内部イテレータと外部イテレータを以下のように調整します:
  • 内部イテレータが内部範囲の先頭を指している場合、パターン範囲の終端イテレータに設定されます。
  • 内部イテレータがパターン範囲の先頭を指している場合、外部イテレータをデクリメントし、内部イテレータを前の内部範囲の終端イテレータに設定します。
  • 上記の操作を、内部イテレータがいずれの範囲の先頭も指さなくなるまで繰り返します。
最後に、内部イテレータを以下のようにデクリメントします std:: visit ( [ ] ( auto & it ) { -- it ; } , inner_it_  ) ;
5) 次と同等 auto tmp = * this ;
--* this ;
return tmp ;

戻り値

1,4) * this
3,5) 変更前に行われた * this のコピー。