>Nope. Please see http://article.gmane.org/gmane.comp.lib.boost.devel/23466 >for the semantics clarification. Basically, I want the whole bind >expression to return an unary function object which, when invoked, will >use the argument to construct a nested nullary function object:
> bind( &show_warning, message_dialog(), <arg> ) >and pass it as an argument to 'post_command'. >Does it make more sense now? Ok, I really should have a cup of coffee before I answer these questions, The problem with using "lambda" or "bind" in this case is one of order of operations. You want // written as if I had inline function definitions. void f(char *msg) { ..... post_command(void) { .... show_warning(message_dialog(), msg); } } now the problem is that you really can't do this elegantly in C++. You can pass the msg into show_warning either as a global or on the stack. Lambda makes the general assumption that you want to pass things on the stack. What you need is a temporary global. I have some code that might do it, but its not released. (I'm also not sure that Brian's FC++ solution did it right either.) I could send you a copy and let you try if you want. Anyway it would look like this. boost::function<void( user_message )> f( ll::locals<user_message_type &>(_1) [ bind( &post_command, bind(bind( &show_warning, message_dialog(),loc0 ) ) ] ); This should cause a reference to the user_message to be able to be referenced inside of post_command. But I haven't tested it and I don't have time this week either. Anyway if there was a case for having a core language feature to do inline function definitions this is it. -Gary- -Gary- _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost