std:: input_or_output_iterator
|
定義先ヘッダ
<iterator>
|
||
|
template
<
class
I
>
concept input_or_output_iterator
=
|
(C++20以降) | |
input_or_output_iteratorコンセプトはイテレータコンセプト分類体系の基礎を形成します。すべてのイテレータ型はinput_or_output_iteratorの要件を満たします。
説明専用コンセプト /*can-reference*/ は、型が referenceable である場合にのみ満たされる。
注記
input_or_output_iterator
自体はイテレータのデリファレンスとインクリメント操作のみを規定します。ほとんどのアルゴリズムは追加の操作を必要とします。例えば:
-
イテレータとセンチネルの比較(
sentinel_forを参照); -
イテレータからの値の読み取り(
indirectly_readableおよびinput_iteratorを参照); -
イテレータへの値の書き込み(
indirectly_writableおよびoutput_iteratorを参照); -
より豊富なイテレータ移動操作(
forward_iterator、bidirectional_iterator、random_access_iteratorを参照)。
LegacyIterator
要件とは異なり、
input_or_output_iterator
コンセプトはコピー可能性を要求しません。
*
i
は等価性を保持することが要求されるが、
weakly_incrementable
で要求されるインクリメント操作は等価性を保持しない。
例
最小イテレータ。
#include <cstddef> #include <iterator> struct SimpleIterator { using difference_type = std::ptrdiff_t; int operator*(); SimpleIterator& operator++(); void operator++(int) { ++*this; } }; static_assert(std::input_or_output_iterator<SimpleIterator>);