命名空间
变体
操作

iter_swap(ranges::concat_view::iterator)

来自 cppreference.com
< cpp‎ | ranges‎ | concat view‎ | iterator
 
 
范围库
范围适配器
 
 
friend constexpr void iter_swap( const /*iterator*/& x, const /*iterator*/& y )
    noexcept( /* see description */ ) requires ( /* see description */ );
(自 C++26 起)

交换xy 的基础迭代器指向的对象。等效于 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)
交换两个可解引用的对象的引用值
(定制点对象)[编辑]
交换两个迭代器指向的元素
(函数模板) [编辑]