Boost logo

Boost :

From: shunsuke (pstade.mb_at_[hidden])
Date: 2008-04-02 12:40:59

Giovanni Piero Deretta wrote:
> I'm not saying that egg should support optionally-lazy functions [1],
> it is ok if the lazy and non lazy variant have the same name. I just
> want to be sure it is easy to define them.

I did't adopt "optionally-lazy" functions.
As you show, many functions take FunctionObjects as arguments
so that protect or unlambda is needed everywhere.
(I always follow the rationale "one name, one functionality".)
Anyway, egg::unfuse with "contains_bind_expression<FusionSeq>" trait
can easily implement such a optionally-lazy adaptor.

>> After all, Boost.Lambda bind and placeholders are not usable here.
> Why? Detail please :)

A functional call of `static_< always<F> >::type`
is expanded to

If F is a function pointer type, this will clearly crash.
A "regular"ized Boost.Lambda functor also will crash because of uninitialized error.
After all, we need a lambda functor such that default-constructed one is callable.
Egg secretly has one. (I wrote it for unit testing.)
T_bind is Egg's own binder.
TT_1 is Egg's own placeholder, whereas T_bll_1 is type of boost::lambda::_1.


Shunsuke Sogame

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