
Hi, I have one problem with boost.bind and boost.signals I can't understand. Source code is the best description, therefore #include <iostream> #include <boost/signals.hpp> #include <boost/shared_ptr.hpp> #include <boost/bind.hpp> class Func : public boost::noncopyable { public: void operator()(int i) { std::cout<<"Func::operator("<< i <<")\n"; } }; typedef boost::signal<void ()> signal_type; Func f; signal_type::slot_type binded_func = boost::bind<void>(boost::ref(f),42); int main() { boost::shared_ptr<signal_type> apSig(new signal_type()); apSig->connect(binded_func); (*apSig)(); apSig.reset(new signal_type()); boost::signals::connection con = apSig->connect(binded_func); std::cout<<"Connected: "<<con.connected()<<" Blocked: "<<con.blocked()<<"\n"; } Program output: Func::operator(42) Connected: 0 Blocked: 1 Ie, if i create new signal and then try to connect to the same slot, it fails. If I use not boost::bind object but only boost::function as slot, all works ok. I can not understand, why? I used Boost 1.34.1, gcc 4.1.2 Regards, Sergey Kishchenko