iter_swap(ranges::concat_view::iterator)
friend constexpr void iter_swap( const /*iterator*/& x, const /*iterator*/& y )
noexcept( /* see description */ ) requires ( /* see description */ );
|
(начиная с C++26) | |
Обменивает объекты, на которые указывают базовые итераторы x и y. Эквивалентно
std::visit
(
[&](const auto& it1, const auto& it2)
{
if constexpr (std::is_same_v<decltype(it1), decltype(it2)>)
ranges::iter_swap(it1, it2);
else
ranges::swap(*x, *y);
},
x.it_ ,
y.it_
);
Выражение в предложении requires эквивалентно
std::swappable_with<std::iter_reference_t</*iterator*/>,
std::iter_reference_t</*iterator*/>> &&
(... && std::indirectly_swappable<ranges::iterator_t<maybe-const <Const, Views>>>)
.
Если x.it_ .valueless_by_exception() || y.it_ .valueless_by_exception() равно true, поведение не определено.
Эта функция не видна при обычном неквалифицированном или квалифицированном поиске и может быть найдена только с помощью поиска, зависящего от аргументов, когда concat_view::iterator <Const> является ассоциированным классом аргументов.
Параметры
| x, y | - | итераторы |
Исключения
Пусть
its
будет набором lvalue, где каждое значение имеет соответствующий тип в
const
ranges::
iterator_t
<
maybe-const
<
Const, Views
>>
.
Пример
|
Этот раздел не завершён
Причина: отсутствует пример |
Смотрите также
|
(C++20)
|
обменивает значения, на которые ссылаются два разыменовываемых объекта
(объект точки настройки) |
|
обменивает элементы, на которые указывают два итератора
(шаблон функции) |