Namespaces
Variants

iter_swap(ranges::concat_view::iterator)

С ru.cppreference.net
 
 
Библиотека диапазонов
Адаптеры диапазонов
 
 
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 >> .

noexcept спецификация:
noexcept ( noexcept ( ranges:: swap ( * x, * y ) ) && ... && noexcept ( ranges:: iter_swap ( its, its ) ) )

Пример

Смотрите также

(C++20)
обменивает значения, на которые ссылаются два разыменовываемых объекта
(объект точки настройки)
обменивает элементы, на которые указывают два итератора
(шаблон функции)