Namespaces
Variants

std::experimental::ranges:: Common

From cppreference.net
template < class T, class U >

concept bool Common =
Same < ranges:: common_type_t < T, U > , ranges:: common_type_t < U, T >> &&
ConvertibleTo < T, ranges:: common_type_t < T, U >> &&
ConvertibleTo < U, ranges:: common_type_t < T, U >> &&
CommonReference <
std:: add_lvalue_reference_t < const T > ,
std:: add_lvalue_reference_t < const U >> &&
CommonReference <
std:: add_lvalue_reference_t < ranges:: common_type_t < T, U >> ,
ranges:: common_reference_t <
std:: add_lvalue_reference_t < const T > ,

std:: add_lvalue_reference_t < const U >>> ;
(ranges TS)

Common<T, U> 개념은 두 타입 T U 공통 타입 ( ranges::common_type_t 에 의해 계산됨)을 공유하며, 둘 다 이 타입으로 변환될 수 있음을 명시합니다.

Common<T, U> 는 다음 조건이 충족될 때만 만족됩니다: 주어진 표현식 t u 에 대해 decltype ( ( t ) ) T 이고 decltype ( ( u ) ) U 인 경우,

다시 말해, 공통 타입으로의 변환은 원래 표현식의 동등성 보존 특성을 변경해서는 안 됩니다.

동등성 보존

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

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

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

참고 항목

여러 타입들의 공통 타입을 결정
(클래스 템플릿)
여러 타입들의 공통 참조 타입을 결정
(클래스 템플릿)
두 타입이 공통 참조 타입을 공유함을 명시
(컨셉트)