std::ranges:: iter_move
| Iterator concepts | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Iterator primitives | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Algorithm concepts and utilities | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Indirect callable concepts | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Common algorithm requirements | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Utilities | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Iterator adaptors | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Défini dans l'en-tête
<iterator>
|
||
|
inline
namespace
/* unspecified */
{
inline
constexpr
/* unspecified */
iter_move
=
/* unspecified */
;
|
(depuis C++20)
(objet de point de personnalisation) |
|
|
Signature d'appel
|
||
|
template
<
class
T
>
requires
/* voir ci-dessous */
|
(depuis C++20) | |
Obtient une référence rvalue ou un temporaire prvalue à partir d'un itérateur donné.
Un ranges :: iter_move ( t ) est équivalent en expression à :
-
iter_move
(
t
)
, si
t
a un type classe ou énumération et que l'expression est bien formée lorsqu'elle est traitée comme un
opérande non évalué
, où la
résolution de surcharge
de
iter_moveest effectuée uniquement avec les candidats trouvés par recherche dépendante des arguments . - Sinon, std :: move ( * t ) si * t est bien formé et est une lvalue.
- Sinon, * t si * t est bien formé et est une rvalue.
Dans tous les autres cas, un appel à
ranges::iter_move
est mal formé, ce qui peut entraîner un
échec de substitution
lorsque
ranges
::
iter_move
(
e
)
apparaît dans le contexte immédiat d'une instanciation de modèle.
Si ranges :: iter_move ( e ) n'est pas égal à * e , le programme est mal formé, aucun diagnostic requis.
Objets de point de personnalisation
Le nom
ranges::iter_move
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)
|
convertit le résultat du déréférencement de l'itérateur sous-jacent ajusté en son type de référence rvalue associé
(fonction) |
|
(C++20)
|
convertit le résultat du déréférencement de l'itérateur sous-jacent en son type de référence rvalue associé
(fonction) |