Namespaces
Variants

std::experimental::ranges:: WeaklyEqualityComparableWith

From cppreference.net
헤더 파일에 정의됨 <experimental/ranges/concepts>
template < class T, class U >

concept bool WeaklyEqualityComparableWith =
requires ( const std:: remove_reference_t < T > & t,
const std:: remove_reference_t < U > & u ) {
{ t == u } - > Boolean && ;
{ t ! = u } - > Boolean && ;
{ u == t } - > Boolean && ;
{ u ! = t } - > Boolean && ;

} ;
(ranges TS)

WeaklyEqualityComparableWith<T, U> 개념은 T 타입의 객체와 U 타입의 객체가 서로 동등성을 비교할 수 있음을 명시합니다(어느 순서로든). 이 비교는 == != 연산자를 모두 사용하여 수행되며, 비교 결과는 일관성을 가져야 합니다. 보다 엄밀하게 정의하면, WeaklyEqualityComparableWith<T, U> 는 다음 조건이 주어졌을 때만 만족됩니다.

다음은 참입니다:

  • t == u , u == t , t ! = u , u ! = t 는 동일한 도메인을 가집니다;
  • bool ( u == t ) == bool ( t == u ) ;
  • bool ( t ! = u ) == ! bool ( t == u ) ; 그리고
  • bool ( u ! = t ) == bool ( t ! = u ) .

동등성 보존

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

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

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

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

암시적 표현 변형

어떤 상수 lvalue 피연산자에 대해 수정하지 않는 표현식을 사용하는 requires-expression 은 해당 피연산자에 대해 비상수 lvalue 또는 (가능하다면 상수) rvalue를 허용하는 해당 표현식의 추가 변형을 명시적으로 다른 의미론으로 요구하지 않는 한 암묵적으로 요구합니다. 이러한 암묵적 표현식 변형 은 선언된 표현식의 동일한 의미론적 요구사항을 충족해야 합니다. 구현이 이러한 변형들의 구문을 검증하는 범위는 명시되지 않습니다.

참고 항목

== 연산자가 동치 관계임을 명시
(concept)