boost::signals2::postconstructor_invoker — 为使用 deconstruct() 创建的对象传递参数并运行后构造函数。
// In header: <boost/signals2/deconstruct.hpp> class postconstructor_invoker { public: // public methods operator const shared_ptr<T> &(); const shared_ptr<T> & postconstruct(); template<typename A1> const shared_ptr<T> & postconstruct(A1); template<typename A1, typename A2> const shared_ptr<T> & postconstruct(A1, A1); template<typename A1, typename A2, ..., typename AN> const shared_ptr<T> & postconstruct(A1, A1, ..., A1); };
类型为 postconstructor_invoker
的对象由调用 deconstruct() 工厂函数返回。这些对象旨在立即赋值给 shared_ptr(在这种情况下,类的转换运算符将通过调用 postconstruct 来执行转换,不带参数),或者由用户通过显式调用 postconstruct 方法之一将其转换为 shared_ptr。
postconstructor_invoker
公共方法operator const shared_ptr<T> &();
转换运算符的效果与显式调用不带参数的 postconstruct
方法相同。
const shared_ptr<T> & postconstruct(); template<typename A1> const shared_ptr<T> & postconstruct(A1 a1); template<typename A1, typename A2> const shared_ptr<T> & postconstruct(A1 a1, A1 a2); template<typename A1, typename A2, ..., typename AN> const shared_ptr<T> & postconstruct(A1 a1, A1 a2, ..., A1 aN);
postconstruct
方法会无限定地调用 adl_postconstruct()
,然后返回由 deconstruct()
封装在 postconstructor_invoker
对象中的 shared_ptr
。传递给 adl_postconstruct()
调用的前两个参数始终是 deconstruct()
创建的对象的拥有者 shared_ptr
,然后是同一个对象的普通指针。为了方便起见,普通指针将始终被转换为指向非 const 类型的指针,然后再传递给 adl_postconstruct
。传递给 adl_postconstruct
的其余参数是用户可能传递给 postconstruct
方法的任何参数。