当我使用boost :: bind绑定参数到一个函数 - 它们何时被转换为函数所需的类型(如果隐式转换是可能的话)?什么时候boost :: bind将参数转换为所需的类型?
它们是如何存储在bind_t对象中的?作为最初传递给绑定的类型还是作为函数签名所需的类型?
具体来说:
如果我有签名
void SomeFun(SmartPointer<SomeType>)
的函数,并且我使用绑定作为
boost::bind(&SomeFun, somePtr)
其中somePtr
是SomeType*
类型的,将在bind_t
对象包含存储为简单指针的somePtr
的副本,或将它转录到SmartPointer<SomeType>
并成为s作为SmartPointer<SomeType>
?
有一个从SomeType*
到SmartPointer<SomeType>
的隐式转换。与boost::shared_ptr
相反,此SmartPointer
在受管理对象中使用参考计数器,这意味着SomeType
必须从SmartPointed
派生。
我已经更新了我的问题更加紧密地代表我的实际情况。 – 2011-01-12 13:21:50