C++ named requirements: LegacyInputIterator
LegacyInputIterator は、指し示す要素から読み取り可能な LegacyIterator です。 LegacyInputIterator はシングルパスアルゴリズムに対してのみ有効性を保証します: LegacyInputIterator i がインクリメントされると、その以前の値のすべてのコピーは無効化される可能性があります。
目次 |
要件
| 型 | 定義 |
X
|
入力イテレータ型 |
T
|
X
の
値型
(すなわち
std::
iterator_traits
<
X
>
::
value_type
)
|
R
|
std:: iterator_traits < X > :: reference |
| 値 | 定義 |
| i 、 j |
X
型または
const
X
型の値
|
| r |
X&
型の値
|
| その他 | 定義 |
m
|
データメンバまたはメンバ関数を示す可能性のある識別子 |
X
は、以下のすべての条件を満たす場合に
LegacyInputIterator
を満たします:
-
Xは LegacyIterator を満たす。 -
Xは EqualityComparable を満たす。 - 以下の式は適切に定義され、指定された意味を持つ:
| 式 | 型 | 意味論 | |||||
|---|---|---|---|---|---|---|---|
| i ! = j |
|
事前条件 | i と j が ドメイン 内にある == 。 | ||||
| 効果 | 次と等価: ! ( i == j ) 。 | ||||||
| * i |
R
、
T
に変換可能
|
事前条件 | i が 間接参照可能 である。 | ||||
| 効果 |
|
||||||
| i - > m | 事前条件 | i が間接参照可能である。 | |||||
| 効果 | 次と等価: ( * i ) . m 。 | ||||||
| ++ r |
X&
|
事前条件 | r が間接参照可能である。 | ||||
| 事後条件 |
|
||||||
| ( void ) r ++ | 効果 | 次と等価: ( void ) ++ r 。 | |||||
| * r ++ |
T
に変換可能
|
効果 | 次と等価: T x = * r ; ++ r ; return x ; 。 | ||||
等価性ドメイン
「the domain of == 」という用語は、通常の数学的な意味で使用され、 == を用いて比較可能な値の集合を表します。この集合は時間とともに変化する可能性があります。
各アルゴリズムは、使用するイテレータ値の等価性領域に対して追加の要件を課します。これらの要件は、アルゴリズムが == および ! = をどのように使用するかから推測できます。
注記
入力イテレータ
X
が
LegacyForwardIterator
でない場合、
std::
iterator_traits
<
X
>
::
reference
は参照型である必要はありません:入力イテレータの逆参照はプロキシオブジェクトを返すか、あるいは
std::
iterator_traits
<
X
>
::
value_type
自体を値で返す(
std::istreambuf_iterator
の場合のように)ことがあります。
Conceptstd::iterator_traits の定義のために、以下の説明専用コンセプトが定義される。
ここで説明専用コンセプト
|
(C++20以降) |
不具合報告
以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
| DR | 適用対象 | 公開時の仕様 | 正しい仕様 |
|---|---|---|---|
| LWG 98 | C++98 |
*
i
++
の戻り値型は
T
であることが要求されていた
|
T
に変換可能な任意の型でよい
|
|
LWG 2114
( P2167R3 ) |
C++98 | bool への変換可能性は実装の期待を反映するには弱すぎた | 要件を強化 |
関連項目
|
(C++20)
|
型が入力イテレータであること、つまり参照する値を読み取ることができ、前置および後置インクリメントが可能であることを指定する
(concept) |
| イテレータライブラリ | イテレータ、イテレータ特性、アダプタ、およびユーティリティ関数の定義を提供する |