C++ named requirements: LegacyBidirectionalIterator
A LegacyBidirectionalIterator は、双方向(すなわちインクリメントおよびデクリメント)に移動可能な LegacyForwardIterator です。
LegacyBidirectionalIterator
it
が
Container
に由来する場合、
it
の
value_type
はコンテナのものと同じであるため、デリファレンス(
*
it
)によってコンテナの
value_type
が得られます。
目次 |
要件
型
It
は、以下の条件を満たす場合に
LegacyBidirectionalIterator
を満たします
-
型
Itは LegacyForwardIterator を満たす
そして、与えられた
-
a
と
b
、型
Itの左辺値 -
reference、 std:: iterator_traits < It > :: reference によって示される型
以下の式は有効であり、指定された効果を持たなければなりません:
| 式 | 戻り値 | 同等の式 | 注記 |
|---|---|---|---|
| -- a |
It&
|
事前条件:
事後条件:
|
|
| a -- | const It & に変換可能 |
It temp
=
a
;
--
a
;
|
|
| * a -- |
reference
|
可変( mutable ) LegacyBidirectionalIterator は、 LegacyBidirectionalIterator であり、さらに LegacyOutputIterator の要件を満たすものである。
注記
開始イテレータはデクリメント可能ではなく、 -- container. begin ( ) が評価された場合の動作は未定義です。
双方向イテレータはデクリメント可能であるためにデリファレンス可能である必要はありません(特に、終端イテレータはデリファレンス可能ではありませんがデクリメント可能です)。
Conceptstd::iterator_traits の定義のために、以下の説明専用コンセプトが定義される。
説明専用コンセプト
|
(C++20以降) |
不具合報告
以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
| DR | 適用対象 | 公開時の仕様 | 正しい仕様 |
|---|---|---|---|
|
LWG 299
( N3066 ) |
C++98 |
*
a
--
の戻り値型は
T
への変換可能が要求されていた
|
戻り値型を
reference
に変更
[1]
|
| LWG 383 | C++98 | -- a 実行後の b が間接参照可能であることが要求されていた | 代わりに a が間接参照可能であることが要求される |
|
LWG 1212
( N3066 ) |
C++98 |
*
a
--
の戻り値型が
LegacyForwardIterator
が要求する
* a ++ の戻り値型と一致していなかった |
戻り値型を
reference
に変更
|
関連項目
|
(C++20)
|
forward_iterator
が双方向イテレータであることを指定し、後方への移動をサポートする
(コンセプト) |
| Iterator library | イテレータ、イテレータ特性、アダプタ、およびユーティリティ関数の定義を提供する |