Namespaces
Variants

iter_swap(ranges::concat_view::iterator)

ja.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 を左辺値のパックとし、各値は const ranges:: iterator_t < maybe-const  < Const, Views >> の対応する型とする。

noexcept 仕様:
noexcept ( noexcept ( ranges:: swap ( * x, * y ) ) && ... && noexcept ( ranges:: iter_swap ( its, its ) ) )

例

関連項目

(C++20)
二つの間接参照可能なオブジェクトが参照する値を交換する
(カスタマイゼーションポイントオブジェクト)
二つのイテレータが指す要素を交換する
(関数テンプレート)