Namespaces
Variants
Actions

iter_swap(ranges::concat_view::iterator)

From cppreference.com
< cpp‎ | ranges‎ | concat view‎ | iterator
 
 
Ranges library
 
std::ranges::concat_view
iter_swap(concat_view::iterator)
 
friend constexpr void iter_swap( const /*iterator*/& x, const /*iterator*/& y )
    noexcept( /* see description */ ) requires ( /* see description */ );
(since C++26)

Swaps the objects pointed to by the underlying iterators of x and y. Equivalent to 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_
);

The expression in the requires clause is equivalent to std::swappable_with <std::iter_reference_t </*iterator*/>,
                    std::iter_reference_t </*iterator*/>> &&
(... && std::indirectly_swappable <ranges::iterator_t <maybe-const  <Const, Views>>>)
.

If x.it_  .valueless_by_exception() || y.it_  .valueless_by_exception() is true, the behavior is undefined.

This function is not visible to ordinary unqualified or qualified lookup, and can only be found by argument-dependent lookup when concat_view::iterator <Const> is an associated class of the arguments.

[edit] Parameters

x, y - iterators

[edit] Exceptions

Let its be a pack of lvalues, where each value is of the corresponding type in const ranges::iterator_t <maybe-const  <Const, Views>>.

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

[edit] Example

This section is incomplete
Reason: no example

[edit] See also

(C++20)
swaps the values referenced by two dereferenceable objects
(customization point object)[edit]
swaps the elements pointed to by two iterators
(function template) [edit]
Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/ranges/concat_view/iterator/iter_swap&oldid=176991"

AltStyle によって変換されたページ (->オリジナル) /