Namespaces
Variants

cpp/iterator/indirectly swappable: Difference between revisions

From cppreference.com
No edit summary
Space Mission (talk | contribs)
m fmt
 
Line 2: Line 2:
{{cpp/iterator/navbar}}
{{cpp/iterator/navbar}}
{{dcl begin}}
{{dcl begin}}
{{dcl header | iterator}}
{{dcl header|iterator}}
{{dcl | since=c++20 | 1=
{{dcl|since=c++20|1=
template< class I1, class I2 = I1>
template< class I1, class I2 = I1 >
concept indirectly_swappable =
concept indirectly_swappable =
     std::indirectly_readable<I1> &&
     std::indirectly_readable<I1> &&
     std::indirectly_readable<I2> &&
     std::indirectly_readable<I2> &&
     requires( const I1 i1, const I2 i2 ) {
     requires( const I1 i1, const I2 i2 )
{
         ranges::iter_swap(i1, i1);
         ranges::iter_swap(i1, i1);
         ranges::iter_swap(i1, i2);
         ranges::iter_swap(i1, i2);
Line 26: Line 27:
===See also===
===See also===
{{dsc begin}}
{{dsc begin}}
{{dsc inc | cpp/iterator/dsc indirectly_readable}}
{{dsc inc|cpp/iterator/dsc indirectly_readable}}
{{dsc inc | cpp/iterator/ranges/dsc iter_swap}}
{{dsc inc|cpp/iterator/ranges/dsc iter_swap}}
{{dsc end}}
{{dsc end}}


{{langlinks|de|es|ja|ru|zh}}
{{langlinks|de|es|ja|ru|zh}}

Latest revision as of 00:12, 27 December 2022

 
 
Iterator library
Iterator concepts
Iterator primitives
Algorithm concepts and utilities
Indirect callable concepts
Common algorithm requirements
(C++20)
(C++20)
(C++20)
Utilities
(C++20)
Iterator adaptors
Range access
(C++11)(C++14)
(C++14)(C++14)  
(C++11)(C++14)
(C++14)(C++14)  
(C++17)(C++20)
(C++17)
(C++17)
 
Defined in header <iterator>
template< class I1, class I2 = I1 >
concept indirectly_swappable =
    std::indirectly_readable<I1> &&
    std::indirectly_readable<I2> &&
    requires( const I1 i1, const I2 i2 )
    {
        ranges::iter_swap(i1, i1);
        ranges::iter_swap(i1, i2);
        ranges::iter_swap(i2, i1);
        ranges::iter_swap(i2, i2);
    };
(since C++20)

The concept indirectly_swappable specifies a relationship between two types respectively modelling std::indirectly_readable, where their referenced types can be swapped.

Semantic requirements

I1 and I2 model indirectly_swappable only if all concepts it subsumes are modeled.

Equality preservation

Expressions declared in requires expressions of the standard library concepts are required to be equality-preserving (except where stated otherwise).

See also

specifies that a type is indirectly readable by applying operator *
(concept) [edit]
(C++20)
swaps the values referenced by two dereferenceable objects
(customization point object)[edit]