std::indirectly_swappable
Определено в заголовочном файле <iterator> | ||
|---|---|---|
template< class I1, class I2 = I1 >
concept indirectly_swappable =
std::indirectly_readable<I1> &&
std::indirectly_readable<I2> &&
requires( const I1 i1, const I2 i2 )
{
ranges::iter_swap(i1, i1);
ranges::iter_swap(i1, i2);
ranges::iter_swap(i2, i1);
ranges::iter_swap(i2, i2);
};
| (с C++20) |
Концепция indirectly_swappable определяет взаимосвязь между двумя типами, соответственно моделирующими std::indirectly_readable, где их ссылающиеся типы могут быть поменяны местами.
Семантические требования
I1 и I2 моделируют indirectly_swappable только если все подчинённые концепции также моделируются.
Сохранение равенства
Выражения, объявленные в выражениях requires концепций стандартной библиотеки, должны быть сохраняющими равенство (если не указано иное).
См. также
|
(C++20) | определяет, что тип является косвенно читаемым путём применения оператора * (концепция) |
|
(C++20) | меняет местами значения, на которые ссылаются два дериференцируемых объекта (объект точки кастомизации) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/iterator/indirectly_swappable