typeと呼ばれる任意のシグネチャを持つboost::functionがあると仮定しCallbackType
ます。
boost::bind
CallbackTypeと同じ引数を取りながら、2つのファンクターを連続して呼び出す関数を作成するために使用することは可能ですか?
私はどんな潜在的な解決策にもオープンですが、ここに...
magic
...いくつかのテンプレートを使用した架空の例:
Template<typename CallbackType>
class MyClass
{
public:
CallbackType doBoth;
MyClass( CallbackType callback )
{
doBoth = bind( magic<CallbackType>,
protect( bind(&MyClass::alert, this) ),
protect( callback ) );
}
void alert()
{
cout << "It has been called\n";
}
};
void doIt( int a, int b, int c)
{
cout << "Doing it!" << a << b << c << "\n";
}
int main()
{
typedef boost::function<void (int, int, int)> CallbackType;
MyClass<CallbackType> object( boost::bind(doIt) );
object.doBoth();
return 0;
}