ブーストシグナル2のドキュメントのように、切断するスロットを渡したい:
スロットを渡して切断する:このインターフェース モデルでは、sig.connect(typeof(sig)::slot_type(slot_func)) で接続されたスロットの切断は、sig.disconnect(slot_func) を介して実行されます。
#include <iostream>
#include <boost/signals2.hpp>
class Test {
public:
Test();
using Signal = boost::signals2::signal<void ()>;
void slot();
void test();
};
Test::Test() {
boost::function<void ()> boundSlot = boost::bind(&Test::slot, this);
Signal sig;
sig.connect(Signal::slot_type(boundSlot));
sig();
sig.disconnect(boundSlot);
};
void Test::slot() {
std::cout << "slot()" << std::endl;
};
int main()
{
Test aTest;
return 0;
}
...しかし、切断を呼び出すときにエラーが発生しました(http://cpp.sh/45q6を参照):
エラー: 'operator==' のあいまいなオーバーロード
(オペランドの型は 'boost::signals2::slot >::slot_function_type {aka boost::function}'
および 'const boost::function' です)
私は何を間違っていますか?