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ます。