Boost logo

Boost Users :

From: Douglas Gregor (doug.gregor_at_[hidden])
Date: 2005-06-19 21:21:01


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


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net