Boost logo

Boost :

Subject: [boost] Does boost help in creating generic function wrappers?
From: Andy Venikov (avenikov_at_[hidden])
Date: 2010-07-14 22:27:56


In c++0x, creating a generic function wrapper is a bliss:

template <typename Func>
class gen_wrapper
{
   Func && func_;
public:
   gen_wrapper(Func && in) : func_(in) {}

template <typename ... Prms>
/*deduce result here */
operator() (Prms && ... prms)
{
    //Do something special here.
    //NOTE: we can operate with arguments here too

    return func_(std::forward<Prms>(prms)...);
}

};

That's it.

But if I don't have C++0x, can boost help here?

functional/forward_adapter won't work since it hides function
parameters, it only lets you operate with the function.

It looks like it may be possible to do that by using boost/preprocessor
I'll have to generate a whole lot of overloads with O(2^N) (because of
the overload on (T &) or (T const &) for every argument).
But it looks pretty dounting. It's basically what forward_adapter had to do.

Isn't there a ready-made library that would allow me to generate all of
the overloads?

Thanks,
      Andy.


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