Boost logo

Boost :

Subject: Re: [boost] Help with Boost Preprocessor
From: Steven Watanabe (watanabesj_at_[hidden])
Date: 2009-08-29 21:16:02


AMDG

Emil Dotchevski wrote:
> Let's say I have a class template functor like this:
>
> struct
> func
> {
> typedef void result_type;
>
> template <class A1,class A2,class A3>
> void
> operator()( A1, A2, A3, int x )
> {
> }
> };
>
> Given a list of types, I want the function instantiated and called for
> all permutations of the types in the list; the additional argument(s),
> x, just need to be forwarded the same for all instances.
>
> Actually I got it working, see http://codepad.org/tnYTy9Iw.
>
> I don't think that my solution is very good though. First, it has some
> run-time overhead due to the use of boost::bind in fwd1 and fwd2 (see
> link above.) Second, I'd like the macro that defines the type list not
> to be hard-coded in fwd1 and fwd2.
>
> Is this possible?
>

So to be clear given the sequence int, long, you'd like to generate

func()(int(), int(), int());
func()(int(), int(), long());
func()(int(), long(), int());
func()(int(), long(), long());
func()(long(), int(), int());
func()(long(), int(), long());
func()(long(), long(), int());
func()(long(), long(), long());

In Christ,
Steven Watanabe


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