Namensräume
Varianten
Aktionen

std::auto_ptr<T>::operator auto_ptr<Y>

Von cppreference.com
< cpp‎ | memory‎ | auto ptr
 
 
Speicherverwaltungsbibliothek
(nur Exposition*)
Algorithmen für uninitialisierten Speicher
(C++17)
(C++17)
(C++17)
Beschränkte uninitialisierte
Speicher-Algorithmen
C-Bibliothek

Allocatoren
Speicherressourcen
Unterstützung für Garbage Collection
(C++11)(bis C++23)
(C++11)(bis C++23)
(C++11)(bis C++23)
(C++11)(bis C++23)
(C++11)(bis C++23)
(C++11)(bis C++23)
Uninitialisierter Speicher
Explizites Lebenszeitmanagement
 
 
template< class Y >
operator auto_ptr_ref<Y>() throw();
(1) (in C++11 veraltet)
(removed in C++17)
template< class Y >
operator auto_ptr<Y>() throw();
(2) (in C++11 veraltet)
(removed in C++17)

Konvertiert *this in einen auto_ptr für einen anderen Typ Y.

1) Gibt einen implementierungsdefinierten Typ zurück, der eine Referenz auf *this hält. std::auto_ptr ist von diesem Template konvertierbar und aus diesem Template zuweisbar. Die Implementierung darf das Template mit einem anderen Namen versehen oder äquivalente Funktionalität auf andere Weise implementieren.
2) Konstruiert einen neuen auto_ptr mit einem Zeiger, der durch Aufruf von release() erhalten wird.

[bearbeiten] Parameter

(keine)

[bearbeiten] Rückgabewert

1) Ein implementierungsdefinierter Typ, der eine Referenz auf *this hält.
2) Ein auto_ptr mit einem Zeiger, der durch Aufruf von release() erhalten wird.

[bearbeiten] Anmerkungen

Der Konstruktor und der Kopierzuweisungsoperator von auto_ptr_ref sind vorhanden, um das Kopierkonstruieren und Zuweisen von std::auto_ptr aus namenlosen Temporärwerten zu ermöglichen. Da sein Kopierkonstruktor und sein Kopierzuweisungsoperator das Argument als nicht-const Referenz nehmen, können sie Rvalue-Argumente nicht direkt binden. Eine benutzerdefinierte Konvertierung (1) oder (2) kann jedoch ausgeführt werden (wodurch der ursprüngliche auto_ptr freigegeben wird), gefolgt von einem Aufruf des Konstruktors oder Kopierzuweisungsoperators, der auto_ptr_ref per Wert annimmt. Dies ist eine frühe Implementierung der Move-Semantik.