名前付き要件:LegacyBidirectionalIterator
LegacyBidirectionalIterator は双方向に移動できる (つまりインクリメントとデクリメントができる) LegacyForwardIterator です。
目次 |
[編集]要件
以下の内容を満たす場合、型 It
は LegacyBidirectionalIterator を満たします。
- 型
It
が LegacyForwardIterator を満たす。
さらに、
It
型のイテレータa
,b
std::iterator_traits<It>::reference
によって表される型reference
が与えられたとき、以下の式が有効でなければならず、指定された効果を持たなければなりません。
式 | 戻り値 | 同等な式 | 注釈 |
---|---|---|---|
--a | It& | 事前条件:
事後条件:
| |
a-- | const It& に変換可能 | It temp = a; --a; | |
*a-- | reference |
可変な LegacyBidirectionalIterator は LegacyOutputIterator の要件を追加で満たす LegacyBidirectionalIterator です。
[編集]ノート
begin イテレータはデクリメント可能ではありません。 --container.begin() が評価された場合、動作は未定義です。
任意の双方向イテレータが逆参照可能である必要やデクリメント可能である必要はありません (特に、 end イテレータは逆参照可能ではありませんがデクリメントは可能です)。
コンセプトstd::iterator_traits の定義のために、以下の説明専用コンセプトが定義されます。
説明専用コンセプト | (C++20以上) |
[編集]関連項目
ForwardIterator が後方移動をサポートする双方向イテレータであることを指定します (コンセプト) |