std::experimental::ranges:: Common
|
헤더에 정의됨
<experimental/ranges/concepts>
|
||
|
template
<
class
T,
class
U
>
concept
bool
Common
=
|
(ranges TS) | |
Common<T, U>
개념은 두 타입
T
와
U
가
공통 타입
(
ranges::common_type_t
에 의해 계산됨)을
공유하며, 둘 다 이 타입으로 변환될 수 있음을 명시합니다.
Common<T, U>
는 다음 조건이 충족될 때만 만족됩니다: 주어진 표현식
t
와
u
에 대해
decltype
(
(
t
)
)
가
T
이고
decltype
(
(
u
)
)
가
U
인 경우,
-
ranges::
common_type_t
<
T, U
>
(
t
)
는
ranges::
common_type_t
<
T, U
>
(
t
)
와 동일하며, 이는
t가 등식 보존 표현식인 경우에만 해당합니다; 그리고 -
ranges::
common_type_t
<
T, U
>
(
u
)
는
ranges::
common_type_t
<
T, U
>
(
u
)
와 동일하며, 이는
u가 등식 보존 표현식인 경우에만 해당합니다.
다시 말해, 공통 타입으로의 변환은 원래 표현식의 동등성 보존 특성을 변경해서는 안 됩니다.
동등성 보존
표현식은 동일한 입력이 주어졌을 때 동일한 출력을 결과로 내놓는다면 등식 보존(equality preserving) 합니다.
- 표현식의 입력은 피연산자들로 구성됩니다.
- 표현식의 출력은 결과와 표현식에 의해 수정된 모든 피연산자(있는 경우)로 구성됩니다.
동등성 보존이 요구되는 모든 표현식은 추가로 안정적(stable) 이어야 합니다: 동일한 입력 객체에 대한 이러한 표현식의 두 평가는 해당 입력 객체에 대한 명시적인 중간 수정이 없는 경우 동일한 출력을 가져야 합니다.
참고 항목
|
여러 타입들의 공통 타입을 결정
(클래스 템플릿) |
|
|
여러 타입들의 공통 참조 타입을 결정
(클래스 템플릿) |
|
|
두 타입이 공통 참조 타입을 공유함을 명시
(컨셉트) |