
alfC wrote:
thank you er and Mathias for your answers,
alfC wrote:
Does Boost have a generalization of std::plus and std::multiplies (std_function.hpp)? How about the boost::lambda arithmetic operators, possibly in combination with ll_static_cast<Tp>, and -if necessary- put the result in the functor wrapper boost::function<Tp(const Tp&,const Tp&) ?
what is "ll_static_cast<Tp>"? after that part I got lost.
the cast was in mind to allow for an argument that is convertible to but not necessarily equal to Tp.
but I need this generalization of multiplies as one of the default parameter of a template, how would you pass a lambda expression as template parameter?
Since you insist on a template parameter, template<typename Tp,template<typename> class G = default_factory> struct my_class{ typedef function<Tp(const Tp&,const Tp&)> F; my_class() : f(G<Tp>::create()){} F f; }; template<typename Tp> struct default_factory{ typedef BOOST_TYPEOF( lambda::_1 * lambda::_2 ) result_; static result_ create(){ return lambda::_1 * lambda::_2; } }; I did not even try to compile it, just an idea.
The reason I returned to my post is that today I found boost/mpl/ plus.hpp and boost/mpl/multiplies.hpp which seem to answer the first part of my question (although not the syntactic sugar part).
Thank you, Alfredo