当我使用 boost::bind 将参数绑定到函数时-它们何时转换为函数所需的类型(如果可以进行隐式转换)?
它们是如何存储在 bind_t 对象中的?作为最初传递给 bind 的类型还是作为函数签名所需的类型?
具体来说:
如果我有签名的功能
void SomeFun(SmartPointer<SomeType>)
我使用绑定作为
boost::bind(&SomeFun, somePtr)
somePtr
类型在哪里SomeType*
,该bind_t
对象将包含somePtr
存储为简单指针的副本还是将其强制转换为SmartPointer<SomeType>
并存储为SmartPointer<SomeType>
?
SomeType*
从to有一个隐式转换SmartPointer<SomeType>
。与在托管对象boost::shared_ptr
中SmartPointer
使用引用计数器相反,含义SomeType
必须从SmartPointed
.