std::input_or_output_iterator
std::input_or_output_iterator (입력·출력 반복자 컨셉)
반복자 분류(iterator taxonomy)의 기초가 되는 컨셉이에요. 모든 반복자 타입이 input_or_output_iterator 요구사항을 만족해요. C++20부터 있어요.
출처: cppreference
본문
<iterator> 헤더에 정의돼 있어요.
template< class I >
concept input_or_output_iterator =
requires(I i) {
{ *i } -> /*can-reference*/;
} &&
std::weakly_incrementable<I>;
input_or_output_iterator 컨셉은 반복자 분류의 기초를 이뤄요. exposition-only 컨셉 /*can-reference*/는 타입이 void(cv-한정 포함)가 아닐 때에만 만족돼요.
참고
input_or_output_iterator 자체는 반복자의 역참조·증가 연산만 명세해요. 대부분의 알고리즘은 추가 연산을 요구해요. 예를 들어:
- 센티널로 반복자 비교하기 —
sentinel_for - 반복자에서 값 읽기 —
indirectly_readable,input_iterator - 반복자에 값 쓰기 —
indirectly_writable,output_iterator - 더 풍부한 반복자 이동 —
forward_iterator,bidirectional_iterator,random_access_iterator,contiguous_iterator