On Thu, Jan 28, 2010 at 2:22 PM, Igor R <boost.lists@gmail.com> wrote:
> void handler1( );
> void handler2(unsigned int i1, unsigned int i2, float f, char* c);
>
> and pass both handlers to an async function of asio and have no problem.

How can you pass both handlers to an async function of asio?
Maybe, you can create a "binder" based on these functions, but the
resulting functor should have the number of arguments required by asio
concepts.

> /* some code doing stuff ... */
>           schedule_callback(boost::bind(callback1, parameter1, parameter2));
> /* ... do some more things ... */
> schedule_callback(boost::bind(&FooClass::method1, FooInstancePointer,
> param1));
> /* more code  ... */
> schedule_callback(boost::bind(callback2, param1));

Actually, the question is: *who* will set parameter1, parameter2 etc?
If you know the values of these arguments in the place where you call
schedule_callback, and the callback invoker should not set pass any
arguments to your handler, then the prototype of your handler should
be: void(void). Then you can do something like this:

void shedule_callback(function<void(void>);
void handler1(int, int, std::string);
//...
schedule_callback(bind(&handler1, 5, 7, "hello"));

But if the callback inoker should pass some parameters to your
handler, the handler prototype should reflect this fact.

Now i understand it. I was messing up functions with binders.
Thanks for your patience and good will Igor!

 
_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-users



--
Matheus Araújo Aguiar
Computer Scientist
matheus.pit@gmail.com