Hopefully this is not another simple oversight on my part but I have code like below and the disconnect wrapper does not work.
Thanks.
typedef boost::signals2::signal VoidSignal;
typedef VoidSignal::slot_type VoidSlot;
class x{
public:
void somefuncA()
{
cerr << "Bada bing" << endl;
}
void somefuncB()
{
cerr << "Bada boom " << endl;
}
};
void disconnect(VoidSlot const& rF, VoidSignal& rSig)
{
rSig.disconnect(rF); //won't compile
//rSig.disconnect(&rF); //compiles but doesn't disconnect
}
int main()
{
x myX;
VoidSignal sig;
sig.connect(VoidSlot(&x::somefuncB, &myX));
disconnect(VoidSlot(&x::somefuncB, &myX, sig); //doesn't work/compile as expected
disconnect(boost::bind(&x::somefuncB, &myX, sig); //doesn't work/compile either
sig(); // will still invoke somefuncB
return 0;
}