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( /* 见下文 */ ) |
(C++26 起) | |
交换两个底层迭代器(均以 it_
代表)所指向的对象。等价于:
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_ );
令 MCV
为 std::conditional_t<Const, const Views, Views>。requires子句 中的表达式等价于:
std::swappable_with<std::iter_reference_t</*iterator*/>, std::iter_reference_t</*iterator*/>> && (... && std::indirectly_swappable<ranges::iterator_t<MCV>>)
调用这个函数前,x.
it_
.
valueless_by_exception() 和 y.
it_
.
valueless_by_exception() 必须都为 false。否则,其行为未定义。
此函数对常规的无限定或有限定查找不可见,而只能在 concat_view::iterator<Const>
为实参的关联类时由实参依赖查找找到。
参数
x, y | - | iterators |
返回值
(无)
异常
令 its 为类型 const ranges::iterator_t<MCV> 的相应左值的包。
noexcept 说明:
noexcept(noexcept(ranges::swap(*x, *y)) && ... && noexcept(ranges::iter_swap(its, its)))
示例
本节未完成 原因:暂无示例 |
参阅
(C++20) |
交换两个可解引用对象所引用的值 (定制点对象) |
交换两个迭代器所指向的元素 (函数模板) |