Boost logo

Boost :

Subject: Re: [boost] [mpl][fold.html] apply<op, _1, deref<_2> > correction needed.
From: Larry Evans (cppljevans_at_[hidden])
Date: 2009-03-12 17:39:35

On 03/11/09 16:20, Larry Evans wrote:
> On 03/11/09 12:07, Larry Evans wrote:
>> On 03/11/09 11:38, Steven Watanabe wrote:
>>> Finally, when you use a lambda expression
>>> inside another lambda expression, you need
>>> to wrap it in protect.

Steven, I tried that, but got an error, which lead me finally
to the lambda<Op>::type::apply<,> solution shown below.


> So, the fold.html docs are wrong and could be corrected by
> changing:
> apply<op,_1, deref<_2> >
> to:
> lambda<op>::type::apply<_1,deref<_2> >
> , or am I missing something else.
Apparently I was missing something because the page:

Says for any _Lambda Expression_ f and arbitrary type a1,...,an:

   typedef apply<f,a1,...,an>::type t

is equivalent to:

   typedef apply_wrap< lambda<f>::type,a1,...,an>::type t;

and the page:

says for any _Metafunction Class_ f and arbitrary types a1,...,an:

   typedef apply_wrap<f,a1,>::type t;

is equivalent to:

   f::apply<a1,... an>::type t;

so, the fold.html expression:

   apply<op,_1, deref<_2> >

is equivalent to:

   apply_wrap<lambda<op>::type, _1, deref<_2> >

is equivalent to:

   lambda<op>::type::apply<_1, deref<_2> >::type

which is the exact expression I got to work; yet,
just coding:

   apply<op, _1, deref<_2> >

doesn't work.

Maybe there's a bug in the compiler I'm using?

It's gcc-4.4 or gcc-4.1.

Anybody else having this problem with another compiler?



Boost list run by bdawes at, gregod at, cpdaniel at, john at