跳到主要内容

std::out_ptr_t<Smart,Pointer,Args...>::out_ptr_t

自 C++23 起
// 1)
explicit out_ptr_t( Smart &sp, Args... args );
// 2)
out_ptr_t( const out_ptr_t& ) = delete;

创建 out_ptr_t。将 sp 适配为好像它绑定到 Smart& 成员一样,将 args... 中的每个参数 t 捕获为好像用 std::forward<T>(t) 初始化 Args.. 中的对应类型为 T 的成员一样,然后值初始化存储的 Pointer。


复制构造函数被显式删除。out_ptr_t 不可复制也不可移动。

参数

sp - 要适配的对象(通常是智能指针)
args... - 用于重置捕获的参数

返回值

(无)

异常

可能抛出实现定义的异常。

备注

构造完成后,任何转换函数返回的指针或 void* 对象指向的内存内容等于 nullptr

args... 中的每个参数如果为对象类型,则会被移入创建的 out_ptr_t 中,或者如果为引用类型,则会原样传输到创建的 out_ptr_t 中。

创建 out_ptr_t 的构造函数允许抛出异常。例如,当 spstd::shared_ptr 时,新的控制块的分配可能在构造函数中执行,而不是在析构函数中。

示例

本节不完整

std::out_ptr_t<Smart,Pointer,Args...>::out_ptr_t

自 C++23 起
// 1)
explicit out_ptr_t( Smart &sp, Args... args );
// 2)
out_ptr_t( const out_ptr_t& ) = delete;

创建 out_ptr_t。将 sp 适配为好像它绑定到 Smart& 成员一样,将 args... 中的每个参数 t 捕获为好像用 std::forward<T>(t) 初始化 Args.. 中的对应类型为 T 的成员一样,然后值初始化存储的 Pointer。


复制构造函数被显式删除。out_ptr_t 不可复制也不可移动。

参数

sp - 要适配的对象(通常是智能指针)
args... - 用于重置捕获的参数

返回值

(无)

异常

可能抛出实现定义的异常。

备注

构造完成后,任何转换函数返回的指针或 void* 对象指向的内存内容等于 nullptr

args... 中的每个参数如果为对象类型,则会被移入创建的 out_ptr_t 中,或者如果为引用类型,则会原样传输到创建的 out_ptr_t 中。

创建 out_ptr_t 的构造函数允许抛出异常。例如,当 spstd::shared_ptr 时,新的控制块的分配可能在构造函数中执行,而不是在析构函数中。

示例

本节不完整