std::experimental::ranges:: Swappable, std::experimental::ranges:: SwappableWith
|
template
<
class
T
>
concept
bool
Swappable
=
|
(1) | (ranges TS) |
|
template
<
class
T,
class
U
>
concept
bool
SwappableWith
=
|
(2) | (ranges TS) |
概念
Swappable<T>
规定了类型
T
的左值是可交换的。
概念
SwappableWith<T, U>
规定了由
T
和
U
编码的类型及值类别表达式可相互交换。仅当调用
ranges::
swap
(
t, u
)
能交换
t
与
u
的值时,
SwappableWith<T, U>
才被满足。具体而言,若存在分别等于
t
和
u
的独立对象
t2
与
u2
,在求值
ranges::
swap
(
t, u
)
或
ranges::
swap
(
u, t
)
后,
t2
应等于
u
且
u2
应等于
t
。
等值保持性
表达式若在给定相等输入时产生相等输出,则称其具有 等值保持性 。
- 表达式的输入由其操作数构成。
- 表达式的输出由其结果及所有被该表达式修改的操作数(如有)构成。
每个要求保持相等性的表达式还必须满足 稳定性 要求:对此类表达式进行两次求值时,若输入对象相同且期间未对这些输入对象进行显式修改,则必须产生相等的输出结果。
除非另有说明,在 要求表达式 中使用的每个表达式都必须保持相等性且稳定,且表达式求值仅可修改其非常量操作数。常量操作数不得被修改。