std::output_iterator
std::output_iterator (출력 반복자 컨셉)
input_or_output_iterator를 정제해, T가 인코딩하는 타입과 값 카테고리의 값을 쓰는 데 쓰일 수 있다는 요구사항을 추가하는 컨셉이에요. C++20부터 있어요.
출처: cppreference
본문
<iterator> 헤더에 정의돼 있어요.
template< class I, class T >
concept output_iterator =
std::input_or_output_iterator<I> &&
std::indirectly_writable<I, T> &&
requires(I i, T&& t) {
*i++ = std::forward<T>(t); /* equality-preserving 이 요구되진 않음 */
};
output_iterator 컨셉은 input_or_output_iterator를 정제해, T가 인코딩하는 타입과 값 카테고리의 값을 쓰는 데 쓰일 수 있다는(indirectly_writable을 통해) 요구사항을 추가해요. equality_comparable은 요구되지 않아요.
의미 요구사항
decltype((E))가 T인 표현식 E와 역참조 가능한 I 타입 객체 i가 있을 때, std::output_iterator<I, T>는 그것이 포함하는 모든 컨셉이 모델링되고 *i++ = E;가 *i = E; ++i;와 같은 효과를 가질 때에만 모델링돼요.
동등성 보존(Equality preservation)
표준 라이브러리 컨셉의 requires 표현식에 선언된 표현식은 (명시된 경우를 제외하고) 동등성 보존이 요구돼요.