ASPN ActiveState Programmer Network
ActiveState
/ Home / Perl / PHP / Python / Tcl / XSLT /
/ Safari / My ASPN /
Cookbooks | Documentation | Mailing Lists | Modules | News Feeds | Products | User Groups


Recent Messages
List Archives
About the List
List Leaders
Subscription Options

View Subscriptions
Help

View by Topic
ActiveState
.NET Framework
Open Source
Perl
PHP
Python
Tcl
Web Services
XML & XSLT

View by Category
Database
General
SOAP
System Administration
Tools
User Interfaces
Web Programming
XML Programming


MyASPN >> Mail Archive >> boost
boost
Re: [boost] Re: MPL usage for code generation
by David Abrahams other posts by this author
Jan 23 2003 3:22AM messages near this date
Re: [boost] Re: MPL usage for code generation | [boost] Re: MPL usage for code generation
Terje Slettebø <tslettebo@[...].no>  writes:

> >From: "David Abrahams" <dave@[...].com>
> 
> > "Andrei Alexandrescu" <andrewalex@[...].com> writes:
> >
> > > Or (barring my lack of mastering some syntactic details):
> > >
> > > inline void do_my_function(string&, void_) {}
> > >
> > > template <class Lst>
> > > inline void do_my_function(string& s, Lst lst)
> > > {
> > >     my_function<front<Lst>::type>(s);
> > >     do_my_function(s, pop_front<Lst>::type());
> > > }
> > > ...
> > > do_my_function(s, my_list());
> > >
> > > No struct, no for_each, no operator(). Et que le meilleur gagne :o).
> >
> > Yeah, I haven't always been very comfortable with the
> > value-per-character of mpl::for_each -- it seems to have similar
> > properties to std::for_each in that way.
> 
>  Perhaps it might be possible to do some compile-time/run-time lambda
>  (similar to Boost.Lambda for runtime, and MPL's lambda), so you could do
>  something like:
> 
>  mpl::for_each<my_list>(my_function<_>(s));
> 
>  It would then transform the function call "my_function<_>(s)" into an
>  instantiated function object of the kind suitable for mpl::for_each.

I'm afraid that particular syntax won't work for this particular case,
though.  If my_function is a function template, my_function<_>  is a
function, and my_function<_> (s) calls that function.

Since there are no (function template) template parameters, only
(class template) template parameters, there doesn't appear to be any
way to make this one particularly easy except by using the
preprocessor to define some kind of function object.

It appears to be just bad luck that higher order functional
programming with function templates is impossible in C++.

-- 
                       David Abrahams
   dave@[...].com * http://www.boost-consulting.com
Boost support, enhancements, training, and commercial distribution

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
Thread:
Hugo Duncan
Andrei Alexandrescu
Hugo Duncan
Hugo Duncan
Hugo Duncan
David Abrahams
Peter Dimov
David Abrahams
=?iso-8859-1?Q?Terje_Sletteb=F8?=
=?iso-8859-1?Q?Terje_Sletteb=F8?=
=?iso-8859-1?Q?Terje_Sletteb=F8?=
David Abrahams
Hugo Duncan
Andrei Alexandrescu
David Abrahams
David Abrahams
Andrei Alexandrescu
David Abrahams
Douglas Paul Gregor
David Abrahams
Douglas Paul Gregor
David Abrahams
Douglas Paul Gregor
David Abrahams
Douglas Paul Gregor

Privacy Policy | Email Opt-out | Feedback | Syndication
© ActiveState Software Inc. All rights reserved