On 2/27/2010 1:30 AM, Marcin Zalewski wrote:
I am trying to use lambda's constructor [1] with fusion's fused [2]. Fused requires that the function object passed to it has a following valid expression:
boost::result_of< F(T1 ...TN)>::type
Unfortunately, constructor does not support result_of.
Use Phoenix instead of Lambda, and problem solved ;)
Actually, it seems that Phoeinx's construct does not do the same thing as lambda's constructor. Using lambda, you can write:
constructor<T>() c; c(arg1, ..., argn);
With Phoenix, you need to give arguments ahead of time:
construct<T>(ctor_arg1, ctor_arg2, ..., ctor_argN);
That's not exactly the same. Lambda works out very nicely in a situation where it is not possible to say how many arguments will there be until they are collected.
That (constructor) is very easy to add as a phoenix lazy function (just a few lines of code). Regards, -- Joel de Guzman http://www.boostpro.com http://spirit.sf.net http://www.facebook.com/djowel Meet me at BoostCon http://www.boostcon.com/home http://www.facebook.com/boostcon