Namespaces
Variants

iter_swap (ranges::concat_view:: iterator )

From cppreference.net
Ranges library
Range adaptors
friend constexpr void iter_swap ( const /*iterator*/ & x, const /*iterator*/ & y )
noexcept ( /* 説明を参照 */ ) requires ( /* 説明を参照 */ ) ;
(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句内の式は以下と等価です: 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 の場合、動作は未定義です。

この関数は通常の unqualified lookup または qualified lookup では可視化されず、 argument-dependent lookup によってのみ発見可能であり、その場合も 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)
二つの間接参照可能なオブジェクトが参照する値を交換する
(カスタマイゼーションポイントオブジェクト)
二つのイテレータが指す要素を交換する
(関数テンプレート)