>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

Reply via email to