Namespaces
Variants

std::experimental::unique_resource<R, D>:: operator=

From cppreference.net
unique_resource & operator = ( unique_resource && other )
noexcept ( /*siehe unten*/ ) ;
(Library Fundamentals TS v3)

Verschiebezuweisungsoperator. Ersetzt die verwaltete Ressource und den Löscher mit denen von other .

Formal sei RS der Typ des gespeicherten Resource Handles:

  • Zuerst ruft es reset ( ) auf, um die aktuell gehaltene Ressource freizugeben, falls vorhanden.
  • Dann weist es den gespeicherten Ressourcen-Handle und den Deleter mit denen von other zu. std::move wird auf den gespeicherten Ressourcen-Handle oder den Deleter von other angewendet, falls std:: is_nothrow_move_assignable_v < RS > oder std:: is_nothrow_move_assignable_v < D > jeweils true ist. Die Zuweisung des gespeicherten Ressourcen-Handles wird zuerst ausgeführt, es sei denn std:: is_nothrow_move_assignable_v < D > ist false und std:: is_nothrow_move_assignable_v < RS > ist true .
  • Schließlich setzt es * this so, dass es die Ressource genau dann besitzt, wenn other sie vor der Zuweisung besaß, und other die Ressource nicht mehr besitzt.

Falls std:: is_nothrow_move_assignable_v < RS > true ist, muss RS die MoveAssignable -Anforderungen erfüllen; andernfalls muss RS die CopyAssignable -Anforderungen erfüllen. Falls std:: is_nothrow_move_assignable_v < D > true ist, muss D die MoveAssignable -Anforderungen erfüllen; andernfalls muss D die CopyAssignable -Anforderungen erfüllen. Die Nichterfüllung der oben genannten Anforderungen führt zu undefiniertem Verhalten.

Inhaltsverzeichnis

Parameter

other - Ressourcen-Wrapper, von dem das Eigentum übertragen wird

Rückgabewert

* this

Ausnahmen

Jede Ausnahme, die bei der Copy-Zuweisung geworfen wird.

Hinweise

Wenn eine Kopie eines Members eine Exception wirft, lässt dieser Mechanismus other intakt und * this im freigegebenen Zustand.

Beispiel

Siehe auch

verwaltet oder ersetzt die verwaltete Ressource
(öffentliche Elementfunktion)
weist den unique_ptr zu
(öffentliche Elementfunktion von std::unique_ptr<T,Deleter> )