std::out_ptr_t<Smart,Pointer,Args...>::~out_ptr_t
來自 cppreference.com
~out_ptr_t(); |
(C++23 起) | |
透過修改後的 Pointer
物件(或在呼叫 operator void**() 時為 void* 物件)的值和捕獲的引數重置所適配的 Smart
物件。
令
-
s
表示所適配的Smart
物件, -
args...
表示捕獲的引數, -
p
表示儲存的Pointer
的值,如果呼叫了 operator void**,則為 static_cast<Pointer>(*operator void**()), -
SP
是- 如果 Smart::pointer 有效並表示一個型別,則為 Smart::pointer,否則
- Smart::element_type*,如果 Smart::element_type 有效並表示一個型別,否則,
- std::pointer_traits<Smart>::element_type*,如果 std::pointer_traits<Smart>::element_type 有效並表示一個型別,否則,
-
指標
.
如果 s.reset(static_cast<SP>(p), std::forward<Args>(args)...) 格式良好,則解構函式執行
- if (p) s.reset(static_cast<SP>(p), std::forward<Args>(args)...);,
否則,如果 std::is_constructible_v<Smart, SP, Args...> 為 true,則解構函式執行
- if (p) s = Smart(static_cast<SP>(p), std::forward<Args>(args)...);,
否則,程式格式錯誤。
[編輯] 注意
如果 Smart
是 std::shared_ptr 的特化,則實現可以在構造時分配新控制塊的儲存,以便將非丟擲工作留給解構函式。
按值捕獲的引數在重置後被銷燬。