std:: swappable, std:: swappable_with
|
定义于头文件
<concepts>
|
||
|
template
<
class
T
>
concept swappable
=
|
(1) | (C++20 起) |
|
template
<
class
T,
class
U
>
concept swappable_with
=
|
(2) | (C++20 起) |
概念
swappable<T>
规定了类型
T
的左值是可交换的。
概念
swappable_with<T, U>
规定了由
T
和
U
编码的类型及值类别表达式可相互交换。仅当调用
ranges::
swap
(
t, u
)
能交换
t
与
u
的值时,
swappable_with<T, U>
才被满足。具体而言,假设存在分别等于
t
和
u
的独立对象
t2
与
u2
,在求值
ranges::
swap
(
t, u
)
或
ranges::
swap
(
u, t
)
后,
t2
应等于
u
且
u2
应等于
t
。
等值保持性
标准库概念的 requires 表达式 中声明的表达式必须满足 等值保持 要求(除非另有说明)。
参考文献
- C++23 标准 (ISO/IEC 14882:2024):
-
-
18.4.9 概念
swappable[concept.swappable]
-
18.4.9 概念
- C++20 标准 (ISO/IEC 14882:2020):
-
-
18.4.9 概念
swappable[concept.swappable]
-
18.4.9 概念