boost::bind を使用してパラメーターを関数にバインドする場合 - 関数で必要な型にキャストされるのはいつですか (暗黙のキャストが可能な場合)。
それらは bind_t オブジェクトにどのように格納されますか? bind に最初に渡された型として、または関数シグネチャで必要な型として?
具体的には:
サインの機能があれば
void SomeFun(SmartPointer<SomeType>)
そして、バインドを次のように使用します
boost::bind(&SomeFun, somePtr)
wheresomePtr
は 型SomeType*
で、bind_t
オブジェクトには単純なポインタとして格納された のコピーが含まれsomePtr
ますか、それとも にキャストされてSmartPointer<SomeType>
として格納されSmartPointer<SomeType>
ますか?
SomeType*
からへの暗黙のキャストがありSmartPointer<SomeType>
ます。boost::shared_ptr
これとは対照的にSmartPointer
、管理対象オブジェクトで参照カウンターを使用するため、意味SomeType
は から派生する必要がありSmartPointed
ます。