Namespaces
Variants

std::experimental::ranges:: Incrementable

From cppreference.net
헤더 파일에 정의됨 <experimental/ranges/iterator>
template < class I >

concept bool Incrementable =
Regular < I > &&
WeaklyIncrementable < I > &&
requires ( I i ) {
{ i ++ } - > Same < I > && ;

} ;
(ranges TS)

Incrementable<I> 개념은 (전위 및 후위 증가 연산자로) 증가시킬 수 있는 타입의 요구 사항을 명시합니다. 증가 연산들( WeaklyIncrementable 에서 요구하는 연산들 포함)은 동등성 보존(equality-preserving)이 요구되며, 해당 타입은 EqualityComparable 여야 합니다.

a b I 타입의 증가 가능한 객체라고 가정합니다. Incrementable<I> 는 다음 조건에서만 만족됩니다:

  • 만약 bool ( a == b ) 이면 bool ( a ++ == b ) 입니다.
  • 만약 bool ( a == b ) 이면 bool ( void ( a ++ ) , a ) == ++ b ) 입니다.

동등성 보존

표현식은 동일한 입력이 주어졌을 때 동일한 출력을 결과로 내놓는다면 등식 보존(equality preserving) 합니다.

  • 표현식의 입력은 피연산자들로 구성됩니다.
  • 표현식의 출력은 결과와 표현식에 의해 수정된 모든 피연산자(있는 경우)로 구성됩니다.

동등성 보존이 요구되는 모든 표현식은 추가로 안정적(stable) 이어야 합니다: 동일한 입력 객체에 대해 이러한 표현식을 두 번 평가할 때, 해당 입력 객체에 명시적인 수정이 개입되지 않는 한 동일한 출력을 가져야 합니다.

달리 명시되지 않는 한, requires-expression 에서 사용되는 모든 표현식은 등식 보존적이고 안정적이어야 하며, 표현식의 평가는 비상수 피연산자만 수정할 수 있습니다. 상수인 피연산자는 수정되어서는 안 됩니다.

참고 사항

a b 와 같다는 요구사항은 ++a ++b 와 같음을 의미하며, 이는 Incrementable 타입으로 다중 패스 알고리즘의 사용을 가능하게 합니다.