Namensräume
Varianten
Aktionen

std::inout_ptr

Von cppreference.com
< cpp‎ | memory‎ | inout ptr t
 
 
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
 
 
Definiert in Header <memory>
template< class Pointer = void, class Smart, class... Args >
auto inout_ptr( Smart& s, Args&&... args );
(seit C++23)

Gibt ein inout_ptr_t mit abgeleiteten Template-Argumenten zurück, das Argumente zum Zurücksetzen per Referenz erfasst.

Das Programm ist schlecht geformt, wenn die Konstruktion des Rückgabewerts (siehe unten) schlecht geformt ist.

Inhalt

[bearbeiten] Parameter

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

[bearbeiten] Rückgabewert

std::inout_ptr_t<Smart, P, Args&&>(s, std::forward<Args>(args)...), wobei P ist

  • Pointer, wenn Pointer nicht dasselbe wie void ist, andernfalls,
  • Smart::pointer, wenn dieser gültig ist und einen Typ bezeichnet, andernfalls,
  • Smart::element_type*, wenn Smart::element_type gültig ist und einen Typ bezeichnet, andernfalls,
  • std::pointer_traits<Smart>::element_type*.

[bearbeiten] Anmerkungen

Benutzer können das Template-Argument für den Template-Parameter Pointer angeben, um mit externen Funktionen zu interagieren, die einen Pointer* akzeptieren.

Da alle Argumente zum Zurücksetzen per Referenz erfasst werden, sollte das zurückgegebene inout_ptr_t ein temporäres Objekt sein, das am Ende des vollständigen Ausdrucks, der den Aufruf der externen Funktion enthält, zerstört wird, um hängende Referenzen zu vermeiden.

Feature-Test-Makro Wert Std Feature
__cpp_lib_out_ptr 202106L (C++23) std::out_ptr, std::inout_ptr
202311L (C++26) freistehendes std::out_ptr und std::inout_ptr

[bearbeiten] Beispiel

[bearbeiten] Siehe auch

(C++23)
erstellt einen out_ptr_t mit einem zugehörigen intelligenten Zeiger und Zurücksetzungsargumenten
(Funktions-Template) [edit]
Erstellt einen unique Pointer, der ein neues Objekt verwaltet
(Funktionsschablone) [bearbeiten]
erstellt einen geteilten Zeiger, der ein neues Objekt verwaltet
(Funktionsschablone) [bearbeiten]