
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: http://tinyurl.com/32dbq8 // 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. Regards, -- Shunsuke Sogame