boost :: bindを使用して関数にパラメータをバインドするとき - 関数が必要とする型にキャストされるとき(暗黙のキャストが可能な場合)?boost :: bindはいつ引数を必要な型にキャストしますか?
どのようにbind_tオブジェクトに格納されますか?もともとバインドに渡された型、または関数の署名に必要な型として?具体
:私は署名
void SomeFun(SmartPointer<SomeType>)
の機能を有し、私はsomePtr
タイプSomeType*
である
boost::bind(&SomeFun, somePtr)
としてバインドを使用する場合
、bind_t
オブジェクトが含まれていますsomePtr
のコピーが単純なポインタとして格納されているか、SmartPointer<SomeType>
にキャストされ、s SmartPointer<SomeType>
として転売しましたか?
SomeType*
からSmartPointer<SomeType>
への暗黙のキャストがあります。 boost::shared_ptr
とは対照的に、このSmartPointer
は管理対象オブジェクトの参照カウンタを使用します。つまり、SomeType
はSmartPointed
から派生する必要があります。
私はより密接に私の実際のケースを表現するために私の質問を更新しました。 –
関連する部分は「変換が暗黙のうちに、関数が呼び出された時点で暗黙の変換が行われます。boost :: bindは、渡された内容を格納するテンプレートにすぎません。それは私の質問に答えます。 –