std::inout_ptr
Von cppreference.com
< cpp | memory | inout ptr t
| 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, wennPointernicht 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
| Dieser Abschnitt ist unvollständig Grund: kein Beispiel |
[bearbeiten] Siehe auch
| (C++23) |
erstellt einen out_ptr_t mit einem zugehörigen intelligenten Zeiger und Zurücksetzungsargumenten(Funktions-Template) |
| (C++14)(C++20) |
Erstellt einen unique Pointer, der ein neues Objekt verwaltet (Funktionsschablone) |
| erstellt einen geteilten Zeiger, der ein neues Objekt verwaltet (Funktionsschablone) |