std::incrementable

std::incrementable (증분 가능 컨셉)

전위·후위 증가 연산자로 증가시킬 수 있고, 증가 연산이 동등성 보존이며, 타입이 std::equality_comparable인 타입에 대한 요구사항을 명세하는 컨셉이에요. C++20부터 있어요.

출처: cppreference

본문

<iterator> 헤더에 정의돼 있어요.

template< class I >
    concept incrementable =
        std::regular<I> &&
        std::weakly_incrementable<I> &&
        requires(I i) {
            { i++ } -> std::same_as<I>;
        };

이 컨셉은 전위·후위 증가 연산자로 증가시킬 수 있고 증가 연산이 동등성 보존이며, 타입이 std::equality_comparable인 타입에 대한 요구사항을 명세해요. 단일 패스 알고리즘만 지원하는 std::weakly_incrementable과 달리, std::incrementable을 모델링하는 타입에는 다중 패스 단방향 알고리즘을 쓸 수 있어요.

의미 요구사항

타입 I의 임의의 두 증가 가능한 객체 a, b에 대해:

  • bool(a == b)bool(a++ == b)이고,
  • bool(a == b)bool(((void)a++, a) == ++b)이다.

동등성 보존(Equality preservation)

표준 라이브러리 컨셉의 requires 표현식에 선언된 표현식은 (명시된 경우를 제외하고) 동등성 보존이 요구돼요.

더 알아보기 (Learn more)

cppreference