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 표현식에 선언된 표현식은 (명시된 경우를 제외하고) 동등성 보존이 요구돼요.