std::auto_ptr<T>:: operator=
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
auto_ptr
&
operator
=
(
auto_ptr
&
r
)
throw
(
)
;
|
(1) |
(in C++11 veraltet)
(in C++17 entfernt) |
|
template
<
class
Y
>
auto_ptr & operator = ( auto_ptr < Y > & r ) throw ( ) ; |
(2) |
(in C++11 veraltet)
(in C++17 entfernt) |
|
auto_ptr
&
operator
=
(
auto_ptr_ref
<
T
>
m
)
throw
(
)
;
|
(3) |
(in C++11 veraltet)
(in C++17 entfernt) |
Ersetzt das verwaltete Objekt durch dasjenige, 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
konvertierbar zu
und
von
diesem Typ. Der Implementierung ist es erlaubt, dem Template einen anderen Namen zu geben oder äquivalente Funktionalität auf andere Weise zu implementieren.
Inhaltsverzeichnis |
Parameter
| r | - |
ein weiterer
auto_ptr
, um den Besitz des Objekts von diesem zu übertragen
|
| m | - |
ein Objekt eines implementierungsdefinierten Typs, das eine Referenz auf
auto_ptr
hält
|
Rückgabewert
* this .
Hinweise
Der Konstruktor und der Kopierzuweisungsoperator von
auto_ptr_ref
sind vorhanden, um das Kopierkonstruieren und Zuweisen von
std::auto_ptr
aus namenlosen Temporären zu ermöglichen. Da ihr Kopierkonstruktor und Kopierzuweisungsoperator das Argument als nicht-konstante Referenz nehmen, können sie Rvalue-Argumente nicht direkt binden. Allerdings kann eine
benutzerdefinierte Konvertierung
ausgeführt werden (welche das ursprüngliche
auto_ptr
freigibt), gefolgt von einem Aufruf des Konstruktors oder Kopierzuweisungsoperators, die
auto_ptr_ref
als Wert nehmen. Dies ist eine frühe Implementierung von
Move-Semantik
.
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 zuweisbar von
auto_ptr_ref
|
Überladung (3) hinzugefügt |