との間の接続をオーバーライドする必要がありboost::signals2::signal
ますboost::function
。この目的のために、次のテンプレート関数を作成しました。
template<typename T>
void bind(boost::signals2::signal<T> &signal, boost::function<T> function) {
// override code ...
}
bind
これをできるだけシンプルに活用したいと思います。同様の問題に関する投稿で読んだことから、テンプレートパラメータは関数の引数から推測する必要があります。しかし、私の場合、明示的なパラメーターがない場合、それは機能していません。
boost::signals2::signal<void ()> my_signal;
bind<void ()>(my_signal, boost::bind(&A::func, this)); // this works
bind(my_signal, boost::bind(&A::func, this)); // error: no matching function for call
私は何かが足りないのですか?
明示的なテンプレートパラメータを回避するための回避策はありますか?