Namespaces
Variants

std::inout_ptr_t<Smart,Pointer,Args...>:: inout_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 inout_ptr_t ( Smart & sp, Args... args ) ;
(1) (seit C++23)
inout_ptr_t ( const inout_ptr_t & ) = delete ;
(2) (seit C++23)
1) Erzeugt ein inout_ptr_t . Passt sp an, als würde es es an das Smart & -Mitglied binden, erfasst jedes Argument t in args... als würde es das entsprechende Mitglied vom Typ T in Args... mit std:: forward < T > ( t ) initialisieren, initialisiert dann den gespeicherten Pointer mit sp falls Smart ein Zeigertyp ist, andernfalls initialisiert es ihn mit sp. get ( ) . sp. release ( ) kann aufgerufen werden, falls Smart kein Zeigertyp ist, in welchem Fall es im Destruktor nicht erneut aufgerufen wird.
2) Copy-Konstruktor ist explizit gelöscht. inout_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

Wenn Smart kein Zeigertyp ist und sp. release ( ) nicht vom Konstruktor aufgerufen wird, kann es vom Destruktor vor dem Zurücksetzen von sp aufgerufen werden.

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

Der Konstruktor von inout_ptr_t darf Ausnahmen werfen. Zum Beispiel, wenn sp ein intrusiver Zeiger mit einem Kontrollblock ist, kann die Allokation für den neuen Kontrollblock im Konstruktor statt im Destruktor durchgeführt werden.

Beispiel