std::experimental::ranges::OutputIterator
From cppreference.com
< cpp | experimental | ranges
| Defined in header <experimental/ranges/iterator> |
||
| template< class I, class T > concept bool OutputIterator = |
(ranges TS) | |
OutputIteratorコンセプトは、Iteratorの改良版であり、Tによってエンコードされた型と値カテゴリの値(Writable経由)を書き込むことができるという要件を追加します。EqualityComparableは要求されません。
Eを、decltype((E))がTであり、iが型Iのデリファレンス可能なオブジェクトであるような式とします。OutputIterator<I, T>が満たされるのは、*i++ = E;の効果が*i = E; ++i;の効果と同等である場合のみです。
[編集] 等価性保持
式が**等価性保持**であるとは、等しい入力に対して等しい出力を生成することを意味します。
- 式の入力は、そのオペランドで構成されます。
- 式の出力は、その結果と、式によって変更されたすべてのオペランド(存在する場合)で構成されます。
等価性保持が要求されるすべての式は、さらに**安定**である必要があります。同じ入力オブジェクトでそのような式の2回の評価は、これらの入力オブジェクトの明示的な介入的な変更がない限り、等しい出力を持ちます。
[編集] 注記
C++標準の出力イテレータ要件とは異なり、Ranges TSのOutputIteratorは、イテレータカテゴリタグが定義されていることを要求しません。
出力イテレータ上のアルゴリズムは、シングルパスであるべきです。