move
Wandelt unbedingt das Argument in einen rvalue-Verweis um und signalisiert dadurch, dass es verschoben werden kann, wenn das Verschieben für den zugehörigen Typ aktiviert ist.
template<class Type>
typename remove_reference<Type>::type&& move(Type&& Arg) noexcept;
Parameter
Parameter |
Beschreibung |
---|---|
Type |
Ein Typ, der von dem Typ des Arguments abgeleitet wurde, das in Arg zusammen mit den Verweisreduzierungsregeln übergeben wurde. |
Arg |
Das umzuwandelnde Argument. Obwohl der Typ Arg scheinbar als rvalue-Verweis angegeben ist, akzeptiert move auch lvalue-Argumente, da lavalue-Verweise an rvalue-Verweise gebunden werden können. |
Rückgabewert
Arg als rvalue-Verweis, unabhängig davon, ob sein Typ ein Verweistyp ist.
Hinweise
Das Vorlagenargument Type soll nicht explizit angegeben, sondern anhand des Werts abgeleitet werden, der an Arg übergeben wird. Der Typ von Type wird den Verweisreduzierungsregeln entsprechend angepasst.
Mit move wird das zugehörige Argument nicht verschoben. Durch unbedingtes Umwandeln des zugehörigen Arguments, bei dem es sich um ein lvalue-Objekt handeln kann, in einen rvalue-Verweis wird der Compiler stattdessen in die Lage versetzt, den in Arg übergebenen Wert zu verschieben, statt zu kopieren, wenn das Verschieben für den entsprechende Typ aktiviert ist. Wenn das Verschieben für den Typ nicht aktiviert ist, wird er stattdessen kopiert.
Wenn der in Arg übergebene Wert ein lvalue ist – d. h., er besitzt einen Namen oder seine Adresse kann akzeptiert werden – wird er ungültig, wenn die Verschiebung erfolgt. Verweisen Sie nicht auf den in Arg übergebenen Wert mit seinem Namen oder seiner Adresse, nachdem er verschoben wurde.
Anforderungen
Header: <Hilfsprogramm>
Namespace: std