>From: "Aleksey Gurtovoy" <[EMAIL PROTECTED]> > David Abrahams wrote: > > > > It appears to be just bad luck that higher order functional > > programming with function templates is impossible in C++. > > My current understanding (which, admittedly, is not backed up by a > real-world experience) is that if you care about higher-orderness of your > generic algorithms, a preferred implementation construct for those > algorithms is not a function template, but a static _function object_ (a > technique used in FC++): > > struct my_function_ > { > template< typename U > > void operator()(std::string const& text, U) > { > // ... > } > > } my_function; // here! > > > For ordinary uses, the above will act just like a plain function template > (minus ADL/explicit template arguments specification):
However, it does tend to create some boilerplate code, if all you want is to call a function template for all the types. It's similar to std::for_each, if you want to execute arbitrary code, unless you use BLL. Nevertheless, I've asked at comp.std.c++ why function template template parameters aren't allowed (the posting hasn't appeared, yet). > and it will also allow one to do something like this: > > std::string text("text"); > mpl::for_each< my_types >(boost::bind<void>(my_function, text, _1)); I got "error: no instance of function template "boost::mpl::for_each" matches the argument list", when trying this on Intel C++. Do you have a version of this that works? Regards, Terje _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost