std::inout_ptr_t<Smart,Pointer,Args...>:: inout_ptr_t
From cppreference.net
<
cpp
|
memory
|
inout ptr t
C++
Memory management library
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
std::inout_ptr_t
| Member functions | ||||
|
inout_ptr_t::inout_ptr_t
|
||||
| Non-member functions | ||||
|
explicit
inout_ptr_t
(
Smart
&
sp, Args...
args
)
;
|
(1) | (自 C++23 起) |
|
inout_ptr_t
(
const
inout_ptr_t
&
)
=
delete
;
|
(2) | (自 C++23 起) |
1)
创建
inout_ptr_t
对象。将
sp
适配为绑定到
Smart
&
成员,捕获
args...
中的每个参数
t
并如同使用
std::
forward
<
T
>
(
t
)
初始化
Args...
中对应类型为
T
的成员,随后若
Smart
为指针类型则使用
sp
初始化存储的
Pointer
,否则使用
sp.
get
(
)
进行初始化。若
Smart
非指针类型可能调用
sp.
release
(
)
,在此情况下析构函数内不会再次调用该操作。
2)
复制构造函数被显式删除。
inout_ptr_t
既不可复制也不可移动。
目录 |
参数
| sp | - | 要适配的对象(通常为智能指针) |
| args... | - | 用于重置捕获的参数 |
返回值
(无)
异常
可能抛出实现定义的异常。
注释
如果
Smart
不是指针类型且构造函数未调用
sp.
release
(
)
,则可能在重置
sp
之前由析构函数调用。
如果
args...
中的参数是对象类型,则会被移动到创建的
inout_ptr_t
中;如果是引用类型,则会按原样转移到创建的
inout_ptr_t
中。
inout_ptr_t
的构造函数允许抛出异常。例如,当
sp
是一个带有控制块的侵入式指针时,新控制块的分配可能在构造函数内执行,而非在析构函数中执行。
示例
|
本节内容不完整
原因:缺少示例 |