std::inout_ptr_t<Smart,Pointer,Args...>::inout_ptr_t
// 1)
explicit inout_ptr_t( Smart &sp, Args... args );
// 2)
inout_ptr_t( const inout_ptr_t& ) = delete;
创建一个 inout_ptr_t。将 sp
适配为如同将其绑定到 Smart& 成员,捕获 args...
中的每个参数 t
,如同使用 std::forward<T>(t) 初始化 Args...
中类型为 T
的相应成员,然后如果 Smart 是指针类型,则使用 sp
初始化存储的 Pointer,否则,使用 sp.get()
初始化。如果 Smart 不是指针类型,可能会在析构函数中调用 sp.release()
,在这种情况下,析构函数中将不再调用它。
拷贝构造函数被显式删除。 inout_ptr_t 不可拷贝也不可移动。
参数
sp
- 要适配的对象(通常是智能指针)
args...
- 用于重置以捕获的参数
返回值
(无)
异常
可能抛出实现定义的异常。
备注
如果 Smart 不是指针类型且构造函数没有调用 sp.release()
,则析构函数可能会在重置 sp
之前调用它。
如果 args...
中的每个参数是对象类型,则它们会被移动到创建的 inout_ptr_t 中,或者如果它们是引用类型,则会原样传递到创建的 inout_ptr_t 中。
允许 inout_ptr_t 的构造函数抛出异常。例如,当 sp
是带有控制块的内省指针时,新的控制块的分配可能在构造函数中执行,而不是在析构函数中。