
Ok, I've figured out the answer to question 2: void call(Args... args) { boost::function< void() > bound_fn = boost::bind(f, args...); bound_fn(); // in effect the bound_fn will be stored in a queue for later envocation by a different thread } Interested in your comments on my other 2 questions? Thanks again Steve [snip]
1. Please can you give an explanation of what the compiler is actually doing
in your make_func_helper() and make_indexes_...() - This goes beyond my capabilities at the moment, and I'm always looking to improve my knowledge.
3. In attached file "attempt_2.cpp" at Line 27, there's a struct cb_ with a typedef "type" of the member function pointer of the form T::fn(Args...).
template< class T, class... Args > struct cb_ { typedef void (T::*type)(Args...); };
As far as I can see, this is of the same form as Peter's void (T::*pm)(Args...) member function pointer is it not? How come the compiler can't match &X::f with typename cb_
::type? [/snip]