std::sentinel_for
std::sentinel_for (센티널 컨셉)
input_or_output_iterator 타입과 범위를 나타내는 semiregular 타입 사이의 관계를 명세하는 컨셉이에요. C++20부터 있어요.
출처: cppreference
본문
<iterator> 헤더에 정의돼 있어요.
template< class S, class I >
concept sentinel_for =
std::semiregular<S> &&
std::input_or_output_iterator<I> &&
__WeaklyEqualityComparableWith<S, I>;
sentinel_for 컨셉은 input_or_output_iterator 타입과 그 값이 범위를 나타내는 semiregular 타입 사이의 관계를 명세해요. exposition-only 컨셉 __WeaklyEqualityComparableWith는 equality_comparable에 기술돼 있어요.
의미 요구사항
각각 타입 S와 I의 값 s, i가 있어 [i, s)가 범위를 나타낸다고 하자. sentinel_for<S, I>는 다음이 성립할 때만 모델링돼요.
i == s가 잘 정의된다.bool(i != s)라면i는 역참조 가능하고 [++i, s)가 범위를 나타낸다.std::assignable_from<I&, S>가 모델링되거나 만족되지 않는다.
==의 영역은 시간에 따라 바뀔 수 있어요. 범위를 나타내는 반복자 i와 센티널 s(i != s)가 있을 때, 반복자를 증가시킨 뒤에도 [i, s)가 계속 범위를 나타내야 하는 것은 아니에요.