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>
специфицирует, что lvalue типа
T
являются swappable.
Концепт
swappable_with<T, U>
определяет, что выражения типа и категории значения, закодированные в
T
и
U
, могут быть обменены друг с другом.
swappable_with<T, U>
выполняется только если вызов
ranges::
swap
(
t, u
)
обменивает значения
t
и
u
, то есть, при наличии различных объектов
t2
, равных
t
, и
u2
, равных
u
, после вычисления либо
ranges::
swap
(
t, u
)
, либо
ranges::
swap
(
u, t
)
,
t2
становится равным
u
, а
u2
становится равным
t
.
Сохранение равенства
Выражения, объявленные в requires выражениях концепций стандартной библиотеки, должны быть equality-preserving (если не указано иное).
Ссылки
- Стандарт 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 Концепт