(優れた) 質問C++ OutputIterator ポストインクリメント要件 に従って、型の逆参照可能でインクリメント可能な値、および適切な型の値r
について、次の式を観察します。OutputIterator
X
o
*r++ = o;
有効であり、同等のセマンティクスを持っています
X a(r);
++r;
*a = o;
ただし、その間に が複数回インクリメントされた場合、a
逆参照割り当て可能であることに変わりはありません。r
つまり、このコードは有効ですか?
X a(r);
++r;
++r;
*a = o;
値に対する操作が別の値に対する操作の有効性にどのように影響するかを理解するのは困難ですが、たとえばInputIterator
(24.2.3) は、の事後条件の下で++r
:
の以前の値のコピーは、
r
逆参照可能にする必要も、 のドメインにある必要もありません==
。
関連セクション: 24.2.2 イテレーター、24.2.4 出力イテレーター、17.6.3.1 テンプレート引数の要件。
また、これが有効である必要がないOutputIterator
場合、既存の要件を守りながら、その非有効性を利用することで型の実装 (効率性、単純さ) が向上する状況はありますか?