
Jesse Perla schrieb:
Thanks as always Steven, What is the general thinking on lambda vs. phoenix 2 vs. phoenix 3? Do we expect phoenix 3 to be the main lambda library in boost (eventually)? Should I start getting comfortable with Phoenix 2 to prepare for it or might Phoenix 3 be radically different?
Also, I can't figure out in phoenix how I would have lazy operator() on already constructed functors. Is this possible?
Not sure, what you want. If you want to bind functor this is possible with phoenix. Hre is a code to illustrate this. #include <vector> #include <algorithm> #include <cmath> #include <boost/spirit/include/phoenix_core.hpp> #include <boost/spirit/include/phoenix_function.hpp> using namespace boost::phoenix; using namespace boost::phoenix::arg_names; using namespace std; struct exp__ { template<typename Arg> struct result{typedef Arg type;}; template<typename Arg> Arg operator()(Arg arg) const { return std::exp(arg); } }; struct sin__ { template<typename Arg> struct result{typedef Arg type;}; template<typename Arg> Arg operator()(Arg arg) const { return std::sin(arg); } }; function<sin__> const sin_=sin__(); function<exp__> const exp_=exp__(); int main() { double init[] = { 2, 10, 4, 5, 1, 6, 8, 3, 9, 7 }; vector<double> c(init, init + 10); std::transform(init,init+10,c.begin(), exp_(sin_(arg1)) ); return 0; }
cout << expectation( f( g(_x) ), dist);
Thanks, -Jesse _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users