std::ranges:: iter_move
| Iterator concepts | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Iterator primitives | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Algorithm concepts and utilities | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Indirect callable concepts | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Common algorithm requirements | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Utilities | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Iterator adaptors | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Definiert im Header
<iterator>
|
||
|
inline
namespace
/* unspecified */
{
inline
constexpr
/* unspecified */
iter_move
=
/* unspecified */
;
|
(seit C++20)
(Anpassungspunktobjekt) |
|
|
Aufrufsignatur
|
||
|
template
<
class
T
>
requires
/* siehe unten */
|
(seit C++20) | |
Erhält einen Rvalue-Referenz oder einen Prvalue-Temporärwert von einem gegebenen Iterator.
Ein ranges :: iter_move ( t ) ist ausdrucksäquivalent zu:
-
iter_move
(
t
)
, falls
t
einen Klassen- oder Aufzählungstyp besitzt und der Ausdruck wohlgeformt ist, wenn er als
nicht ausgewerteter Operand
behandelt wird, wobei die
Überladungsauflösung
von
iter_movenur mit den Kandidaten durchgeführt wird, die durch argumentabhängige Suche gefunden wurden. - Andernfalls std :: move ( * t ) , falls * t wohlgeformt ist und ein L-Wert darstellt.
- Andernfalls * t , falls * t wohlgeformt ist und ein R-Wert darstellt.
In allen anderen Fällen ist ein Aufruf von
ranges::iter_move
fehlerhaft, was zu einem
Substitutionsfehler
führen kann, wenn
ranges
::
iter_move
(
e
)
im unmittelbaren Kontext einer Template-Instanziierung erscheint.
Wenn ranges :: iter_move ( e ) nicht gleich * e ist, ist das Programm fehlerhaft, keine Diagnose erforderlich.
Customization Point Objects
Der Name
ranges::iter_move
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)
|
wandelt das Ergebnis der Dereferenzierung des angepassten zugrundeliegenden Iterators in seinen zugehörigen Rvalue-Referenztyp um
(Funktion) |
|
(C++20)
|
wandelt das Ergebnis der Dereferenzierung des zugrundeliegenden Iterators in seinen zugehörigen Rvalue-Referenztyp um
(Funktion) |