[function] How do you bind two boost::function objects together?

I'm trying to convert the input argument to a function object using a
small helper function object. The code below looks relatively simple,
but it doesn't seem to compile. Any ideas what could be wrong?
template

Jason House wrote:
I'm trying to convert the input argument to a function object using a small helper function object. The code below looks relatively simple, but it doesn't seem to compile. Any ideas what could be wrong?
template
boost::function convert(boost::function &object_to_convert){ boost::function input_converter(...); // The following fails to compile boost::function
converted_function (boost::lambda::bind(object_to_convert, input_converter)); return converted_function }
I realize the use of local variables in the object creation is a bad
idea, but that doesn't affect the compilation.
While I get buried in "instantiated from here" messages, here's the
actual error message (altered to match the example)
/usr/local/include/boost/lambda/detail/function_adaptors.hpp:41:
error: no match for call to
'(const boost::function

On Sep 30, 2006, at 1:01 PM, Jason House wrote:
I'm trying to convert the input argument to a function object using a small helper function object. The code below looks relatively simple, but it doesn't seem to compile. Any ideas what could be wrong?
template
boost::function convert(boost::function &object_to_convert){ boost::function input_converter(...); // The following fails to compile boost::function
converted_function (boost::lambda::bind(object_to_convert, input_converter));
The bind expression is going to result in a function object that
calls object_to_convert(input_converter). What you really want is a
function object that takes one parameter ("arg1") and call
object_to_object with the result of input_converter(arg1). To do so,
you will need a nested bind expression that will look something like
this:
boost::function

Douglas Gregor wrote:
On Sep 30, 2006, at 1:01 PM, Jason House wrote:
I'm trying to convert the input argument to a function object using a small helper function object. The code below looks relatively simple, but it doesn't seem to compile. Any ideas what could be wrong?
template
boost::function convert(boost::function &object_to_convert){ boost::function input_converter(...); // The following fails to compile boost::function
converted_function (boost::lambda::bind(object_to_convert, input_converter)); The bind expression is going to result in a function object that calls object_to_convert(input_converter). What you really want is a function object that takes one parameter ("arg1") and call object_to_object with the result of input_converter(arg1). To do so, you will need a nested bind expression that will look something like this:
boost::function
converted_function (boost::lambda::bind(object_to_convert, boost::lambda::bind (input_converter, arg1))); Cheers, Doug
I want the result of the bound expression to have one input parameter
that would be decided later. For instance:
bool some_function(char x);
boost::function
participants (2)
-
Douglas Gregor
-
Jason House