
]': ../vendor/boost/boost/bind/bind_template.hpp:20: instantiated from 'typename boost::_bi::result_traits<R, F>::type boost::_bi::bind_t<R, F, L>::operator()() [with R = void, F = boost::_mfi::mf1<void, antix_discovery_service, boost::_bi::bind_t<void, boost::_mfi::mf0<void, test>, boost::_bi::list1<boost::_bi::value<test> > > >, L = boost::_bi::list2<boost::_bi::value<antix_discovery_service*>, boost::_bi::bind_t<void, boost::_mfi::mf0<void, test>, boost::_bi::list1<boost::_bi::value<test> > > >]'
Unfortunately I cannot grok boost::bind error, but this code seems really simple. If I change the code so that an int is passed to async_discovery, the program compiles. The problem seems to be centered around passing a boost::bind as a template argument. Any help would be appreciated. Here is the code... #include <boost/bind.hpp> class antix_discovery_service { public: template <typename Handler> void start_async_discovery(Handler handler) { } /// Asynchronously resolve a query to a list of entries. template <typename Handler> void async_discovery(Handler handler) { boost::bind(&antix_discovery_service::template start_async_discovery<Handler>, this, handler)(); } private: int ttt; }; class test { public: void do_it() { } }; int main() { antix_discovery_service ads; test t; ads.async_discovery(boost::bind<void>(&test::do_it, t)); return 0; } and here is the error... main.cpp: In function 'int main()': main.cpp:33: warning: unused variable 'jjj' ../vendor/boost/boost/bind/bind.hpp: In member function 'void boost::_bi::list2<A1, A2>::operator()(boost::_bi::type<void>, F&, A&, int) [with F = boost::_mfi::mf1<void, antix_discovery_service, boost::_bi::bind_t<void, boost::_mfi::mf0<void, test>, boost::_bi::list1<boost::_bi::value<test> > > >, A = boost::_bi::list0, A1 = boost::_bi::value<antix_discovery_service*>, A2 = boost::_bi::bind_t<void, boost::_mfi::mf0<void, test>, boost::_bi::list1<boost::_bi::value<test> > main.cpp:14: instantiated from 'void antix_discovery_service::async_discovery(Handler) [with Handler = boost::_bi::bind_t<void, boost::_mfi::mf0<void, test>, boost::_bi::list1<boost::_bi::value<test> > >]' main.cpp:35: instantiated from here ../vendor/boost/boost/bind/bind.hpp:306: error: invalid use of void expression ...failed gcc.compile.c++ ..\.bin\test_bind\gcc-4.0\debug\main.o... ...skipped <p..\.bin\test_bind\gcc-4.0\debug>test_bind.avc for lack of <p..\.bin\test_bind\gcc-4.0\debug>main.o... ...skipped <p..\.bin\test_bind\gcc-4.0\debug>test_bind.ix86-win32.elf for lack of <p..\.bin\test_bind\gcc-4.0\debug>test_bind.avc... ...skipped <pinstall>test_bind.ix86-win32.elf for lack of <p..\.bin\test_bind\gcc-4.0\debug>test_bind.ix86-win32.elf... ...failed updating 1 target... ...skipped 3 targets... Compilation exited abnormally with code 1 at Tue Jul 14 14:27:58 -Jimmy.