|
Boost : |
From: Aleksey Gurtovoy (agurtovoy_at_[hidden])
Date: 2003-08-10 20:47:38
Peter Dimov wrote:
> Aleksey Gurtovoy wrote:
> > Consider the following snippet:
> >
> > void show_warning( message_dialog const&, user_message );
> > void post_command( boost::function<void()> );
> >
> > int main()
> > {
> > boost::function<void( user_message )> f(
> > bind( &post_command
> > , ????( bind( &show_warning, message_dialog(), _1 ) )
> > // ^^^^ what goes here?
>
> "protect", in boost/bind/protect.hpp. Lambda has both "protect" and
> "unlambda", either will work (I think).
>
> > )
> > );
> > }
I am afraid it's not that simple. Note that 'post_command' takes a
_nullary_, not an unary function. To clarify the semantics of the above,
I need to construct a bind expression which would allow the original code
to become equivalent to the following:
void
post_show_warning_command(
message_dialog const& a_dialog
, user_message a_message
)
{
post_command( boost::bind( &show_warning
, a_dialog
, a_message
) );
}
int main()
{
boost::function<void( user_message )> f(
boost::bind(
&post_show_warning_command
, message_dialog()
, _1
)
);
}
Aleksey
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk