
signal_template.hpp:213 is: #if BOOST_WORKAROUND(BOOST_MSVC, <= 0x1700) What is 0x1700 supposed to mean here? The comment mentions 6.0 and 7.0, which correspond to 1200 and 1300 (decimal). This workaround disables disconnect() for non-groups on all versions of MSVC; doesn't this cause unexpected test failures? Furthermore, if I try to compile the example I was sent: #include <boost/signal.hpp> #include <boost/bind.hpp> using namespace boost; typedef signal<void(int)> sig_t; typedef sig_t::slot_function_type func_t; struct A { void f(int) { } }; int main() { sig_t sig; A a; func_t x = bind(&A::f, ref(a), _1); sig.connect(x); sig(42); sig.disconnect(x); sig(42); } with the workaround set to 1300, it still doesn't work: C:\Documents and Settings\Peter Dimov\cvs\boost\boost\signals\signal_template.hpp(242) : error C2666: 'boost::operator`=='' : 4 overloads have similar conversions C:\Documents and Settings\Peter Dimov\cvs\boost\boost\function\function_template.hpp(689): could be 'void boost::operator ==<R,T0,Allocator>(const boost::function1<R,T0,Allocator> &,const boost::function1<R,T0,Allocator> &)' with [ R=void, T0=int, Allocator=std::allocator<void> ] C:\Documents and Settings\Peter Dimov\cvs\boost\boost\function\function_base.hpp(649): or 'boost::enable_if_c<B,T>::type boost::operator ==<boost::signal1<R,T1,Combiner,Group,GroupCompare,SlotFunction>::slot_function_type>(Functor,const boost::function_base &)' with [ B=true, T=bool, R=boost::detail::function_traits_helper<boost::add_pointer<void (int)>::type>::result_type, T1=boost::detail::function_traits_helper<boost::add_pointer<void (int)>::type>::arg1_type, Combiner=boost::last_value<void>, Group=int, GroupCompare=std::less<int>, SlotFunction=boost::function<void (int)>, Functor=boost::signal1<boost::detail::function_traits_helper<boost::add_pointer<void (int)>::type>::result_type,boost::detail::function_traits_helper<boost::add_pointer<void (int)>::type>::arg1_type,boost::last_value<void>,int,std::less<int>,boost::function<void (int)>>::slot_function_type ] C:\Documents and Settings\Peter Dimov\cvs\boost\boost\function\function_base.hpp(640): or 'boost::enable_if_c<B,T>::type boost::operator ==<Function>(const boost::function_base &,Functor)' with [ B=true, T=bool, Function=func_t, Functor=func_t ] or 'built-in C++ operator==(boost::function1<R,T0,Allocator>::safe_bool, boost::function1<R,T0,Allocator>::safe_bool)' with [ R=void, T0=int, Allocator=std::allocator<void> ] and [ R=void, T0=int, Allocator=std::allocator<void> ] while trying to match the argument list '(boost::signal1<R,T1,Combiner,Group,GroupCompare,SlotFunction>::slot_function_type, const func_t)' with [ R=boost::detail::function_traits_helper<boost::add_pointer<void (int)>::type>::result_type, T1=boost::detail::function_traits_helper<boost::add_pointer<void (int)>::type>::arg1_type, Combiner=boost::last_value<void>, Group=int, GroupCompare=std::less<int>, SlotFunction=boost::function<void (int)> ] C:\Documents and Settings\Peter Dimov\cvs\boost\boost\signals\signal_template.hpp(224) : see reference to function template instantiation 'void boost::signal1<R,T1,Combiner,Group,GroupCompare,SlotFunction>::do_disconnect<T>(const Function &,boost::mpl::bool_<C_>)' being compiled with [ R=boost::detail::function_traits_helper<boost::add_pointer<void (int)>::type>::result_type, T1=boost::detail::function_traits_helper<boost::add_pointer<void (int)>::type>::arg1_type, Combiner=boost::last_value<void>, Group=int, GroupCompare=std::less<int>, SlotFunction=boost::function<void (int)>, T=func_t, Function=func_t, C_=false ] testbed.cpp(23) : see reference to function template instantiation 'void boost::signal1<R,T1,Combiner,Group,GroupCompare,SlotFunction>::disconnect<func_t>(const T &)' being compiled with [ R=boost::detail::function_traits_helper<boost::add_pointer<void (int)>::type>::result_type, T1=boost::detail::function_traits_helper<boost::add_pointer<void (int)>::type>::arg1_type, Combiner=boost::last_value<void>, Group=int, GroupCompare=std::less<int>, SlotFunction=boost::function<void (int)>, T=func_t ] -- Peter Dimov http://www.pdimov.com