Boost logo

Boost :

From: shunsuke (pstade.mb_at_[hidden])
Date: 2008-04-04 00:53:58

Giovanni Piero Deretta wrote:
>> BTW,
>> expression<T_curry2(F)>::type c = {{}};
>> is feasible.
> That would be very fine with me. But do you really need the double braces?

Well, after you and Eric's suggestion, and some thoughts,
I found that a newly introduced name can be `static_` only.
How about this? :

Adapting stateful functions with static-initialization:
     // already supported in review version
     result_of<T_curry2(F)>::type c = BOOST_EGG_CURRY2(&f);

Adapting runtime functions:
     // already supported, of course.
     result_of<T_curry2(F const &)>::type c = curry2(f);

Adapting stateless functions with static-initialization:
     // the newly proposed feature (macros unneeded.)
     static_< result_of<T_curry2(F)> >::type c = {{}};

     // BTW, this feature can be translated into the current review version:
     // static_< mpl::always<result_of<T_curry2(F)>::type> >::type c = BOOST_EGG_STATIC();

     // static_ is generic enough:
     static_< std::plus<int> >::type p = {{}};

The document will put much greater empahsis on the new feature
than the macro features, and it will be very simplified.

     // Also, I've added the secret support for return_of ;-)
     // See:
     // After good experiences, (or if a portable workaround for round lambda syntax is found,)
     // this may be officially added.

BTW, I'm making all the braced-initializers of Function Builders be `{{}}`
so that those macros will be removed.
`{{}}` seems not so bad, because it is the same as egg::function<>'s.


Shunsuke Sogame

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