Boost logo

Boost :

From: Marco Costalba (mcostalba_at_[hidden])
Date: 2007-10-01 13:39:28

And finally (sorry for the noise ;-) I would like to write instead of this

> int main()
> {
> typedef boost::tuple<
> int(char)
> , double(int, char)
> , char(std::string)
> , void(std::string, std::string, std::string)
> >
> Signatures;
> boost::overload<Signatures> f;
> f.set<0>(&foo1);
> f.set<1>(&foo2);
> f.set<2>(&foo3);
> f.set<3>(&foo4);

Something like

 ?? type_of ?? f = get_overload(foo1, foo2, foo3, foo4);

where 'get_overload' is something along the lines of:

template <typename T1, typename T2, typename T3, typename T4> inline
overload<tuple<T1, T2, T3, T4> >
get_overload(T1 const& f1, T2 const& f2, T3 const& f3, T4 const& f4)
        typedef overload<tuple<T1, T2, T3, T4> > F;
        return F(f1, f2, f3, f4); // well, overload c'tor is still to define ;-)

So to avoid the user to specify the signatures for each function he
wants to use.

The problem is that I don't know what is the best way to define
variable 'f', (type_of ?). There is a way to avoid user to type the
signatures, given that he already has the functions (fooX) ?


Boost list run by bdawes at, gregod at, cpdaniel at, john at