« Return to Thread: [Signals2] Signal disconnect wrapper won't work

[Signals2] Signal disconnect wrapper won't work

by Marc DelaCruz :: Rate this Message:

Reply to Author | View in Thread

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<void ()> 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;
}
_______________________________________________
Boost-users mailing list
Boost-users@...
http://lists.boost.org/mailman/listinfo.cgi/boost-users

 « Return to Thread: [Signals2] Signal disconnect wrapper won't work