
Hi, See this code ... #include<iostream> #include<boost/bind.hpp> #include<boost/signal.hpp> struct CSignal { typedef boost::signal< void (void) > UpdateSignal; UpdateSignal sig; }; struct CSlot {: void update(int i) { std::cout << "Call void update( " << i << " )" << std::endl; } void connect(CSignal& cs) { cs.sig.connect(boost::bind(&CSlot::update, this, 5)); } void disconnect(CSignal& cs) { cs.sig.disconnect(boost::bind(&CSlot::update, this, 5)); } }; int main() { CSignal csignal; CSlot cslot; cslot.connect(csignal); csignal.sig(); cslot.disconnect(csignal); csignal.sig(); return (0); } When i compile with GCC 4.1.1, this compile fine. But when i compile with MSVC 2005 it report an error: .\main.cpp(30) : error C2664: 'boost::signal1<R,T1,Combiner,Group,GroupCompare,SlotFunction>::disconnect' : cannot convert parameter 1 from 'boost::_bi::bind_t<R,F,L>' to 'const int &' with [ R=void, T1=int, Combiner=boost::last_value<void>, Group=int, GroupCompare=std::less<int>, SlotFunction=boost::function<void (int)> ] and [ R=void, F=boost::_mfi::mf1<void,CSlot,int>, L=boost::_bi::list2<boost::_bi::value<CSlot *>,boost::arg<1>> ] Reason: cannot convert from 'boost::_bi::bind_t<R,F,L>' to 'const int' with [ R=void, F=boost::_mfi::mf1<void,CSlot,int>, L=boost::_bi::list2<boost::_bi::value<CSlot *>,boost::arg<1>> ] No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called have you any idee to solve this problem? thank david callu