std::swappable, std::swappable_with — cppreference.com
Материал из cppreference.com
<tbody> </tbody>
| Определено в заголовочном файле |
||
|
|
(1) | (начиная с C++20) |
|
|
(2) | (начиная с C++20) |
Концепт swappable<T> указывает, что значения lvalue типа T могут быть обменяны.
Концепт 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 концептов стандартной библиотеки, должны сохранять равенство (если не указано иное).