std::experimental::ranges:: Swappable, std::experimental::ranges:: SwappableWith
|
헤더에 정의됨
<experimental/ranges/concepts>
|
||
|
template
<
class
T
>
concept
bool
Swappable
=
|
(1) | (ranges TS) |
|
template
<
class
T,
class
U
>
concept
bool
SwappableWith
=
|
(2) | (ranges TS) |
개념
Swappable<T>
는 타입
T
의 좌측값(lvalue)이 교환 가능함을 명시합니다.
SwappableWith<T, U>
개념은
T
와
U
로 인코딩된 타입과 값 범주에 해당하는 표현식들이 서로 교환 가능함을 명시합니다.
SwappableWith<T, U>
는
ranges::
swap
(
t, u
)
호출이
t
와
u
의 값을 교환할 때만 만족됩니다. 즉,
t
와 동일한 별개의 객체
t2
와
u
와 동일한 별개의 객체
u2
가 주어졌을 때,
ranges::
swap
(
t, u
)
또는
ranges::
swap
(
u, t
)
중 하나를 평가한 후에
t2
가
u
와 같고
u2
가
t
와 같아야 합니다.
동등성 보존
표현식은 동일한 입력이 주어졌을 때 동일한 출력을 결과로 내놓는다면 등식 보존적(equality preserving) 입니다.
- 표현식의 입력은 피연산자들로 구성됩니다.
- 표현식의 출력은 결과값과 표현식에 의해 수정된 모든 피연산자(있는 경우)로 구성됩니다.
동등성 보존이 요구되는 모든 표현식은 추가로 안정적(stable) 이어야 합니다: 동일한 입력 객체에 대한 이러한 표현식의 두 평가는 해당 입력 객체에 대한 명시적인 중간 수정이 없는 한 동일한 출력을 가져야 합니다.
달리 명시되지 않는 한, requires-expression 에서 사용되는 모든 표현식은 등식 보존적이고 안정적이어야 하며, 표현식의 평가는 비상수 피연산자만 수정할 수 있습니다. 상수인 피연산자는 수정되어서는 안 됩니다.