std::out_ptr_t<Smart,Pointer,Args...>::~out_ptr_t
Von cppreference.com
| ~out_ptr_t(); |
(seit C++23) | |
Setzt das angepasste Smart-Objekt mit dem Wert des modifizierten Pointer-Objekts (oder des void*-Objekts, wenn operator void**() aufgerufen wurde) und die erfassten Argumente zurück.
Seien
-
sbezeichnet das angepassteSmart-Objekt, -
args...bezeichnet die erfassten Argumente, -
pbezeichnet den Wert des gespeichertenPointeroder static_cast<Pointer>(*operator void**()), wennoperator void**aufgerufen wurde, -
SPsei- 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*, wenn std::pointer_traits<Smart>::element_type gültig ist und einen Typ bezeichnet, andernfalls
-
Zeiger.
Wenn s.reset(static_cast<SP>(p), std::forward<Args>(args)...) wohldefiniert ist, führt der Destruktor Folgendes aus:
- if (p) s.reset(static_cast<SP>(p), std::forward<Args>(args)...);,
andernfalls, wenn std::is_constructible_v<Smart, SP, Args...> true ist, führt der Destruktor Folgendes aus:
- if (p) s = Smart(static_cast<SP>(p), std::forward<Args>(args)...);,
andernfalls ist das Programm schlecht geformt.
[bearbeiten] Hinweise
Wenn Smart eine std::shared_ptr-Spezialisierung ist, kann die Implementierung den Speicher für den neuen Steuerblock bei der Konstruktion zuweisen, um nicht-werfende Arbeiten dem Destruktor zu überlassen.
Nach Wert kopierte Argumente werden nach dem Zurücksetzen zerstört.