Boost logo

Boost :

From: John Fletcher (J.P.Fletcher_at_[hidden])
Date: 2006-07-07 07:54:16


Peter

I do not have a boost solution. I do have one using FC++, which was
considered but not included in Boost. See
http://www-static.cc.gatech.edu/~yannis/fc++/

The code looks like this:

#include <iostream>
#include "fcpp/prelude.h"
int foo(int i) { return i; }
int main()
{
     std::cout << fcpp::ptr_to_fun(&foo)(1) << std::endl;
// It can also be saved as an object.
     fcpp::Fun1<int,int> wrap_foo = fcpp::ptr_to_fun(&foo);
     std::cout << wrap_foo(1) << std::endl;
     return 0;
}

where fcpp points to the installation of FC++.

There exists a "boostified" version of FC++ which will do the same.

I hope this helps.

John Fletcher

Peter Soetens wrote:
> Hi,
>
> I'm desperately seeking for doing this conversion using the boost libraries.
> User code often provides a function pointer, while library code often works
> with function types. For example (function_conversion does the 'magic' here):
>
> int foo(int);
>
> template<class T,
> class R = typename function_conversion<T>::type >
> boost::function<R> function_wrapper(T t) {
> return boost::function<R>(t);
> }
>
> Such that the user can write:
>
> function_wrapper( &foo )(1);
>
> Thus no longer needs to specify the int(int) function type to boost::function.
>
> Is it possible to construct such a 'function_conversion' type ?
>
> Any answer is greatly appreciated,
> Peter
>


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk