C++ 名前付き要件: LegacyIterator
From cppreference.com
LegacyIterator 要件は、コンテナの要素を識別し走査するために使用できる型を説明します。
LegacyIterator は、他のイテレータ型によって使用される要件の基本セットです:LegacyInputIterator、LegacyOutputIterator、LegacyForwardIterator、LegacyBidirectionalIterator、および LegacyRandomAccessIterator。イテレータはポインタの抽象化と考えることができます。
すべてのカテゴリのイテレータは、定数時間(償却)で実現可能な関数のみを要求します。したがって、イテレータの要件テーブルおよびコンセプト定義(C++20以降)では、複雑さは指定されていません。
目次 |
[編集] 要件
型 It は、以下の場合に LegacyIterator を満たします。
- 型
Itは CopyConstructible を満たし、 - 型
Itは CopyAssignable を満たし、 - 型
Itは Destructible を満たし、 - 型
Itは Swappable を満たし、 - std::iterator_traits<It> はメンバ typedef
value_type(C++20まで)、difference_type、reference、pointer、およびiterator_categoryを持ち、 It型の左辺値 r が与えられた場合、以下の式は有効であり、指定された効果を持つ必要があります。
| Expression | 返り値の型 | 事前条件 |
|---|---|---|
| *r | unspecified | r は間接参照可能です。 |
| ++r | It& | r はインクリメント可能です(式 ++r の動作は定義されています)。 |
コンセプトstd::iterator_traits の定義のために、以下の exposition-only コンセプトが定義されています。
ここで、提示専用コンセプト __Referenceable<T> は、T& が有効な型である(特に、 |
(C++20以降) |
[編集] 欠陥報告
以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。
| DR | 適用対象 | 公開された動作 | 正しい動作 |
|---|---|---|---|
| LWG 2437 | C++98 | *r は reference である必要があります。 |
出力イテレータには要求されません。 |
| LWG 3420 | C++20 | 提示専用コンセプトはまず copyable をチェックします。 |
copyable は、requires 式が true を返した場合にのみチェックされます。 |
[編集] 関連項目
| (C++20) |
ある型のオブジェクトがインクリメントおよび間接参照できることを規定する (コンセプト) |
| イテレータライブラリ | イテレータ、イテレータ特性、アダプタ、およびユーティリティ関数の定義を提供します。 |