iter_move (std::common_iterator)
|
friend
constexpr
decltype
(
auto
)
iter_move
(
const
std::
common_iterator
&
i
)
noexcept
(
noexcept
(
ranges::
iter_move
(
std::
declval
<
const
I
&
>
(
)
)
)
|
(seit C++20) | |
Wandelt das Ergebnis der Dereferenzierung des zugrundeliegenden Iterators in seinen zugehörigen Rvalue-Referenztyp um.
Der Funktionsrumpf entspricht: return std :: ranges:: iter_move ( std :: get < I > ( i. var ) ) ; .
Diese Funktion ist für gewöhnliches unqualified oder qualified lookup nicht sichtbar und kann nur durch argument-dependent lookup gefunden werden, wenn std:: common_iterator < I, S > eine assoziierte Klasse der Argumente ist.
Wenn
i.
var
kein
I
-Objekt (d.h. einen Iterator) enthält, ist das Verhalten undefiniert.
Inhaltsverzeichnis |
Parameter
| i | - | ein Source-Iterator-Adapter |
Rückgabewert
Ein Rvalue-Referenz oder ein Prvalue-Temporärobjekt.
Komplexität
Konstante.
Beispiel
#include <iomanip> #include <iostream> #include <iterator> #include <string> #include <vector> void print(auto const& rem, auto const& v) { std::cout << rem << '[' << size(v) << "] { "; for (int o{}; auto const& s : v) std::cout << (o++ ? ", " : "") << std::quoted(s); std::cout << " }\n"; } int main() { std::vector<std::string> p{"Andromeda", "Cassiopeia", "Phoenix"}, q; print("p", p); print("q", q); using CTI = std::counted_iterator<std::vector<std::string>::iterator>; using CI = std::common_iterator<CTI, std::default_sentinel_t>; CI last{std::default_sentinel}; for (CI first{{p.begin(), 2}}; first != last; ++first) q.emplace_back(/* ADL */ iter_move(first)); print("p", p); print("q", q); }
Mögliche Ausgabe:
p[3] { "Andromeda", "Cassiopeia", "Phoenix" }
q[0] { }
p[3] { "", "", "Phoenix" }
q[2] { "Andromeda", "Cassiopeia" }
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrigiertes Verhalten |
|---|---|---|---|
| LWG 3953 | C++20 | der Rückgabetyp war std:: iter_rvalue_reference_t < I > | geändert zu decltype ( auto ) |
Siehe auch
|
(C++20)
|
wandelt das Ergebnis der Dereferenzierung eines Objekts in seinen assoziierten Rvalue-Referenztyp um
(Customization Point Object) |
|
(C++20)
|
wandelt das Ergebnis der Dereferenzierung des zugrundeliegenden Iterators in seinen assoziierten Rvalue-Referenztyp um
(Funktion) |
|
(C++11)
|
konvertiert das Argument zu einem Xvalue
(Funktionstemplate) |
|
(C++11)
|
konvertiert das Argument zu einem Xvalue, wenn der Move-Konstruktor keine Ausnahme wirft
(Funktionstemplate) |
|
(C++11)
|
leitet ein Funktionsargument weiter und verwendet den Typ-Template-Parameter, um seine Wertkategorie zu erhalten
(Funktionstemplate) |
|
(C++20)
|
verschiebt einen Bereich von Elementen an einen neuen Speicherort
(Algorithmus-Funktionsobjekt) |
|
(C++20)
|
verschiebt einen Bereich von Elementen in umgekehrter Reihenfolge an einen neuen Speicherort
(Algorithmus-Funktionsobjekt) |