
On Jun 19, 2005, at 10:32 AM, Brian Braatz wrote:
My question is, given:
boost::function< int (char, long) > func(&f);
how is it possible to pass the (char,long)? (I tried to receive this in a template as a single template param, or as three , but neither worked)
int (char, long) is a function type, i.e., the type that the pointer type int (*)(char, long) points to. You can pull apart a point type using partial specialization: template<typename> struct Honk; template<typename R, typename T1, typename T2> struct Honk<R(T1, T2)> { }; Honk<int(char, long)> h; // R = int, T1 = char, T2 = long
I have been studying the headers, but the indirection used (FTSE :) ) is making it hard for me to figure this one out.
The implementation of Boost.Function is most definitely not a thing of beauty, but it gets the job done :) Doug