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 컨셉 __WeaklyEqualityComparableWithequality_comparable에 기술돼 있어요.

의미 요구사항

각각 타입 SI의 값 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)가 계속 범위를 나타내야 하는 것은 아니에요.

더 알아보기 (Learn more)

cppreference