std::ranges:: iter_swap
|
Défini dans l'en-tête
<iterator>
|
||
|
namespace
ranges
{
inline
namespace
/* non spécifié */
{
|
(depuis C++20)
(objet de point de personnalisation) |
|
|
Signature d'appel
|
||
|
template
<
class
I1,
class
I2
>
constexpr void iter_swap ( I1 && i1, I2 && i2 ) noexcept ( /* voir ci-dessous */ ) ; |
(depuis C++20) | |
|
Fonction utilitaire
|
||
|
template
<
class
X,
class
Y
>
constexpr
std::
iter_value_t
<
X
>
|
( exposition uniquement* ) | |
Échange les valeurs désignées par deux itérateurs.
L'effet de la fonction d'assistance d'exposition uniquement
iter-exchange-move
est équivalent à
std::iter_value_t<X> ancien(std::ranges::iter_move(x)); *x = std::ranges::iter_move(y); return ancien;
ranges :: iter_swap ( i1, i2 ) est expression-équivalent à :
-
(
void
)
iter_swap
(
i1, i2
)
, si
i1
ou
i2
a un type classe ou énumération et que l'expression est bien formée, où la
résolution de surcharge
de
iter_swapest effectuée avec le candidat supplémentaire void iter_swap ( auto , auto ) = delete ; [1] , excluantstd::ranges::iter_swaplui-même.- Si la surcharge sélectionnée n'échange pas la valeur désignée par i1 et i2 , le programme est mal formé, aucun diagnostic requis.
-
Sinon,
ranges::
swap
(
*
i1,
*
i2
)
si
I1etI2modélisent tous deuxindirectly_readableet si std:: iter_reference_t < I1 > et std:: iter_reference_t < I2 > modélisentswappable_with. -
Sinon,
(
void
)
(
*
i1
=
iter-exchange-move( i2, i1 ) ) , si std:: indirectly_movable_storable < I1, I2 > et std:: indirectly_movable_storable < I2, I1 > sont tous deux modélisés, sauf que i1 n'est évalué qu'une seule fois. - Sinon, ranges :: iter_swap ( i1, i2 ) est mal formé, ce qui peut entraîner une défaillance de substitution lorsque ranges :: iter_swap ( i1, i2 ) apparaît dans le contexte immédiat d'une instanciation de modèle.
- ↑ Cela empêche d'appeler la version non contrainte de std::iter_swap .
Objets de point de personnalisation
Le nom
ranges::iter_swap
désigne un
objet de point de personnalisation
, qui est un
objet fonction
const d'un type de classe
littéral
semiregular
. Voir
CustomizationPointObject
pour plus de détails.
Exemple
|
Cette section est incomplète
Raison : aucun exemple |
Voir aussi
|
(C++20)
|
échange les objets pointés par deux itérateurs sous-jacents ajustés
(modèle de fonction) |
|
(C++20)
|
échange les objets pointés par deux itérateurs sous-jacents
(modèle de fonction) |
|
échange les éléments pointés par deux itérateurs
(modèle de fonction) |