Spec-Zone.ru › C++

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
(
    [&](constauto&it1,constauto&it2)
    {
        ifconstexpr(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, каждое из которых имеет соответствующий тип в constranges::iterator_t<maybe-const <Const,Views>>.

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

Пример

См. также

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

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/ranges/concat_view/iterator/iter_swap

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API