cpp/iterator/indirectly swappable: Difference between revisions
From cppreference.com
No edit summary |
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
| 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
(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) |