std::out_ptr_t<Smart,Pointer,Args...>::out_ptr_t
// 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 的构造函数允许抛出异常。例如,当 sp
是 std::shared_ptr 时,新的控制块的分配可能在构造函数中执行,而不是在析构函数中。