Namespaces
Variants

std::out_ptr_t<Smart,Pointer,Args...>:: out_ptr_t

From cppreference.net
Memory management library
( exposition only* )
Allocators
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
Uninitialized storage (until C++20)
( until C++20* )
( until C++20* )
( until C++20* )

Garbage collector support (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
explicit out_ptr_t ( Smart & sp, Args... args ) ;
(1) (seit C++23)
out_ptr_t ( const out_ptr_t & ) = delete ;
(2) (seit C++23)
1) Erzeugt ein out_ptr_t . Passt sp an, als ob es an das Smart & Mitglied bindet, erfasst jedes Argument t in args... als ob es das entsprechende Mitglied vom Typ T in Args... mit std:: forward < T > ( t ) initialisiert, dann wertinitialisiert den gespeicherten Pointer .
Dann ruft sp. reset ( ) auf, wenn der Ausdruck wohlgeformt ist; andernfalls ruft sp = Smart ( ) auf, wenn std:: is_default_constructible_v < Smart > true ist. Das Programm ist fehlerhaft, wenn beide Reset-Operationen fehlerhaft sind.
2) Copy-Konstruktor ist explizit gelöscht. out_ptr_t ist weder kopierbar noch verschiebbar.

Inhaltsverzeichnis

Parameter

sp - das Objekt (typischerweise ein Smart Pointer), das angepasst werden soll
args... - die Argumente, die für das Zurücksetzen erfasst werden sollen

Rückgabewert

(keine)

Exceptions

Kann implementierungsdefinierte Ausnahmen auslösen.

Hinweise

Nach der Konstruktion ist das Pointer oder das void * Objekt, auf das der Rückgabewert einer der Konvertierungsfunktionen zeigt, gleich nullptr .

Jedes Argument in args... wird in das erstellte out_ptr_t verschoben, wenn es von einem Objekttyp ist, oder unverändert in das erstellte out_ptr_t übertragen, wenn es von einem Referenztyp ist.

Der Konstruktor von out_ptr_t kann Ausnahmen werfen. Zum Beispiel, wenn sp ein std::shared_ptr ist, kann die Allokation für den neuen Kontrollblock im Konstruktor statt im Destruktor durchgeführt werden.

Beispiel