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_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 концептов стандартной библиотеки, должны сохранять равенство (если не указано иное).