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.
I1
and I2
model indirectly_swappable
only if all concepts it subsumes are modeled.
Expressions declared in requires-expressions of the standard library concepts are required to be equality-preserving (except where stated otherwise).
(C++20) | specifies that a type is indirectly readable by applying operator * (concept) |
(C++20) | swaps the values referenced by two dereferenceable objects (customization point object) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/iterator/indirectly_swappable