std::ranges:: iter_swap
|
Definiert im Header
<iterator>
|
||
|
namespace
ranges
{
inline
namespace
/* unspecified */
{
|
(seit C++20)
(Anpassungspunktobjekt) |
|
|
Aufrufsignatur
|
||
|
template
<
class
I1,
class
I2
>
constexpr void iter_swap ( I1 && i1, I2 && i2 ) noexcept ( /* siehe unten */ ) ; |
(seit C++20) | |
|
Hilfsfunktion
|
||
|
template
<
class
X,
class
Y
>
constexpr
std::
iter_value_t
<
X
>
|
( Nur zur Darstellung* ) | |
Tauscht die Werte, die durch zwei Iteratoren bezeichnet werden.
Die Wirkung der ausschließlich zur Darstellung dienenden Hilfsfunktion
iter-exchange-move
ist äquivalent zu
std::iter_value_t<X> old(std::ranges::iter_move(x)); *x = std::ranges::iter_move(y); return old;
ranges :: iter_swap ( i1, i2 ) ist ausdrucksäquivalent zu:
-
(
void
)
iter_swap
(
i1, i2
)
, falls
i1
oder
i2
einen Klassen- oder Aufzählungstyp hat und der Ausdruck wohlgeformt ist, wobei die
Überladungsauflösung
von
iter_swapmit dem zusätzlichen Kandidaten void iter_swap ( auto , auto ) = delete ; [1] durchgeführt wird, wobeistd::ranges::iter_swapselbst ausgeschlossen ist.- Wenn die gewählte Überladung nicht die durch i1 und i2 bezeichneten Werte austauscht, ist das Programm fehlerhaft, keine Diagnose erforderlich.
-
Andernfalls,
ranges::
swap
(
*
i1,
*
i2
)
, wenn sowohl
I1als auchI2das Konzeptindirectly_readablemodellieren und wenn std:: iter_reference_t < I1 > und std:: iter_reference_t < I2 > das Konzeptswappable_withmodellieren. -
Andernfalls,
(
void
)
(
*
i1
=
iter-exchange-move( i2, i1 ) ) , wenn std:: indirectly_movable_storable < I1, I2 > und std:: indirectly_movable_storable < I2, I1 > beide modelliert werden, außer dass i1 nur einmal ausgewertet wird. - Andernfalls ist ranges :: iter_swap ( i1, i2 ) fehlerhaft, was zu einem Substitutionsfehler führen kann, wenn ranges :: iter_swap ( i1, i2 ) im unmittelbaren Kontext einer Template-Instanziierung erscheint.
- ↑ Dies verhindert den Aufruf der unconstrained std::iter_swap .
Customization Point Objects
Der Name
ranges::iter_swap
bezeichnet ein
Customization Point Object
, welches ein konstantes
Funktionsobjekt
eines
literalen
semiregular
Klassentyps ist. Weitere Details finden Sie unter
CustomizationPointObject
.
Beispiel
|
Dieser Abschnitt ist unvollständig
Grund: Kein Beispiel |
Siehe auch
|
(C++20)
|
vertauscht die Objekte, auf die zwei angepasste zugrunde liegende Iteratoren zeigen
(Funktions-Template) |
|
(C++20)
|
vertauscht die Objekte, auf die zwei zugrunde liegende Iteratoren zeigen
(Funktions-Template) |
|
vertauscht die Elemente, auf die zwei Iteratoren zeigen
(Funktions-Template) |