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 子句中的表达式等价于 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)
交换两个可解引用对象所引用的值
(定制点对象)
交换两个迭代器指向的元素
(函数模板)