std::auto_ptr<T>::operator=
| auto_ptr& operator=( auto_ptr& r ) throw(); |
(1) | (in C++11 veraltet) (removed in C++17) |
| template< class Y > auto_ptr& operator=( auto_ptr<Y>& r ) throw(); |
(2) | (in C++11 veraltet) (removed in C++17) |
| auto_ptr& operator=( auto_ptr_ref<T> m ) throw(); |
(3) | (in C++11 veraltet) (removed in C++17) |
Ersetzt das verwaltete Objekt durch das Objekt, das von r oder m verwaltet wird.
Y* muss implizit in T* konvertierbar sein.auto_ptr_ref ist ein implementierungsdefinierter Typ, der eine Referenz auf auto_ptr hält. std::auto_ptr ist implizit in und aus diesem Typ konvertierbar. Die Implementierung darf die Vorlage unter einem anderen Namen bereitstellen oder eine äquivalente Funktionalität auf andere Weise implementieren.Inhalt |
[bearbeiten] Parameter
| r | - | ein weiterer auto_ptr, von dem das Eigentum des Objekts übertragen werden soll |
| m | - | ein Objekt eines implementierungsdefinierten Typs, das eine Referenz auf auto_ptr hält |
[bearbeiten] Rückgabewert
*this.
[bearbeiten] Hinweise
Der Konstruktor und der Zuweisungsoperator für Kopien von auto_ptr_ref werden bereitgestellt, um das Kopieren von und die Zuweisung an std::auto_ptr von namenlosen Temporärwerten zu ermöglichen. Da sein Kopierkonstruktor und sein Zuweisungsoperator für Kopien das Argument als nicht-const-Referenz entgegennehmen, können sie rvalue-Argumente nicht direkt binden. Eine benutzerdefinierte Konvertierung kann jedoch ausgeführt werden (die den ursprünglichen auto_ptr freigibt), gefolgt von einem Aufruf des Konstruktors oder des Zuweisungsoperators für Kopien, der auto_ptr_ref per Wert entgegennimmt. Dies ist eine frühe Implementierung der Move-Semantik.
[bearbeiten] 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 127 | C++98 | auto_ptr war nicht von auto_ptr_ref zuweisbar |
Überladung (3) hinzugefügt |