std::ranges::concat_view<Views...>:: iterator <Const>:: satisfy , prev , advance-fwd , advance-bwd
以下の説明専用メンバー関数テンプレートは記述を簡略化します。
各ヘルパー関数テンプレートは、型 std::size_t の定数テンプレートパラメータを持ちます。
-
テンプレートパラメータの名前が
N
の場合、テンプレート引数は常に
it_ . index ( ) となります。 -
テンプレートパラメータの名前が
I
の場合、テンプレート引数は
[ 0 ,sizeof... ( Views ))の範囲内の任意の std::size_t 値を取ることができます。
しかし、テンプレート引数はコンパイル時定数ではない可能性があるため、
helper
<
non_const
>
(
/* arguments */
)
の実際の効果は
if
(
non_const
==
0
)
helper
<
0
>
(
/* arguments */
)
;
else
if
(
non_const
==
1
)
helper
<
1
>
(
/* arguments */
)
;
/* other indices */
else
if
(
non_const
==
(
sizeof...
(
Views
)
-
1
)
)
helper
<
sizeof...
(
Views
)
-
1
>
(
/* arguments */
)
;
に類似します。
目次 |
ヘルパーテンプレート
ミニヘルパーテンプレート
|
template
<
std::
size_t
N
>
constexpr auto /*get-iter*/ ( ) ; |
(1) | ( 説明専用* ) |
|
template
<
std::
size_t
I
>
constexpr auto /*get-view*/ ( ) ; |
(2) | ( 説明専用* ) |
|
template
<
std::
size_t
I
>
constexpr auto /*get-begin*/ ( ) ; |
(3) | ( 説明専用* ) |
|
template
<
std::
size_t
I
>
constexpr auto /*get-end*/ ( ) ; |
(4) | ( 説明専用* ) |
|
template
<
std::
size_t
N
>
constexpr auto /*to-underlying-diff-type*/ ( difference_type value ) ; |
(5) | ( 説明専用* ) |
ミニヘルパーテンプレートは、主要なヘルパーテンプレートとメンバー関数の記述を簡素化します。これらはC++標準文書には含まれていません。
it_
に含まれる基盤となるイテレータを取得する。
concat_view
から取得する。
concat_view
における
I
番目のビューへのイテレータを取得する。
get-view
<
I
>
(
)
)
.
concat_view
における
I
番目のビューの終端イテレータまたはセンチネルを取得する。
get-view
<
I
>
(
)
)
.
get-view
<
I
>
(
)
)
。
`タグ内のテキストは翻訳せず、元のフォーマットを保持しています。
base-iter
>>>
(
value
)
.
(注:指定されたテキストブロック内に翻訳対象となる可読テキストが存在しないため、HTML構造はそのまま保持されています)
std::ranges::concat_view:: iterator :: satisfy <N>
|
template
<
std::
size_t
N
>
constexpr void /*satisfy*/ ( ) ; |
( 説明専用* ) | |
it_
の現在の(グローバルな)位置を調整します。
std::ranges::concat_view:: iterator :: prev <N>
|
template
<
size_t N
>
constexpr void /*prev*/ ( ) ; |
( 説明専用* ) | |
it_
を前の(グローバルな)位置に移動します。
std::ranges::concat_view:: iterator :: advance-fwd <N>
|
template
<
size_t N
>
constexpr
void
/*advance-fwd*/
(
difference_type offset,
|
( 説明専用* ) | |
現在の(グローバルな)位置を step ステップ分前方に進めます。
-
N
が
sizeof...
(
Views
)
-
1
の場合、
get-iter < N > ( ) + =to-underlying-diff-type ( steps ) ; と等価です。 -
それ以外の場合、
auto
n_size
=
ranges::
distance
(
get-view < N > ( ) ) ) ;
if ( offset + steps < n_size )
get-iter < N > ( ) + =to-underlying-diff-type ( steps ) ;
else
{
it_ . template emplace < N + 1 > (get-begin < N + 1 > ( ) ) ;
advance-fwd < N + 1 > ( 0 , offset + steps - n_size ) ;
} と等価です。
パラメータ
| offset | - |
現在の(グローバルな)位置の、
it_
が現在参照している範囲の先頭からのオフセット
|
| steps | - | 前方に進めるステップ数 |
(注:指定されたテキストブロック内に翻訳対象となる可読テキストが存在しないため、HTML構造はそのまま保持されています)
std::ranges::concat_view:: iterator :: advance-bwd <N>
|
template
<
size_t N
>
constexpr
void
/*advance-bwd*/
(
difference_type offset,
|
( 説明専用* ) | |
現在の(グローバルな)位置を steps ステップ分後方に進めます。
-
N
が
0
の場合、
get-iter < N > ( ) - =to-underlying-diff-type ( steps ) ; と等価です。 -
それ以外の場合、
if
(
offset
>=
steps
)
get-iter < N > ( ) - =to-underlying-diff-type ( steps ) ;
else
{
auto prev_size = ranges:: distance (get-view < N - 1 > ( ) ) ;
it_ . template emplace < N - 1 > (get-end < N - 1 > ( ) ) ;
advance-bwd < N - 1 > ( prev_size, steps - offset ) ;
} と等価です。
パラメータ
| offset | - |
現在の(グローバルな)位置の、
it_
が現在参照する範囲の先頭からのオフセット
|
| steps | - | 後方に進めるステップ数 |