Boost logo

Boost :

Subject: Re: [boost] [local] Help for the Alternatives section
From: lcaminiti (lorcaminiti_at_[hidden])
Date: 2011-03-29 09:45:11


Joel de Guzman-2 wrote:
>
> On 3/29/2011 12:37 AM, lcaminiti wrote:
> >
> > This worked :)) Finally Boost.Local's Phoenix example reads:
> >
> > #include<boost/spirit/include/phoenix.hpp>
> > #include
> > #include
> > #include
> >
> > int main() {
> > double sum = 0.0;
> > int factor = 10;
> >
> > std::vector v(3);
> > v[0] = 1.0; v[1] = 2.0; v[2] = 3.0;
> >
> > // Passed as template parameter and also defined at expression
> level.
> > std::for_each(v.begin(), v.end(), boost::phoenix::let(
> > // Bind `factor` by constant (reference).
> > boost::phoenix::local_names::_f =
> boost::phoenix::cref(factor))[
> > // Unfortunately, body cannot use C++ statement syntax.
> > // Access `sum` by (non-constant) reference.
> > boost::phoenix::ref(sum) += boost::phoenix::local_names::_f
> *
> > boost::phoenix::arg_names::_1,
> > std::cout<< boost::phoenix::val("Summed:
> ")<<
> > boost::phoenix::ref(sum)<< "\n"
> > ]);
> >
> > std::cout<< sum<< std::endl;
> > return 0;
> > }
> >
> > BTW, this is pretty powerful stuff ;)
>
> I'd use using declarations to avoid code clutter and make the
> code more readable.
>
> int main() {
> double sum = 0.0;
> int factor = 10;
>
> std::vector v(3);
> v[0] = 1.0; v[1] = 2.0; v[2] = 3.0;
>
> using boost::phoenix::let;
> using boost::phoenix::local_names::_f;
> using boost::phoenix::cref;
> using boost::phoenix::ref;
> using boost::phoenix::arg_names::_1;
> using boost::phoenix::val;
>
> // Passed as template parameter and also defined at expression level.
> std::for_each(v.begin(), v.end(), let(
> // Bind `factor` by constant (reference).
> _f = cref(factor))[
> // Unfortunately, body cannot use C++ statement syntax.
> // Access `sum` by (non-constant) reference.
> ref(sum) += _f * _1,
> std::cout << val("Summed: ") << ref(sum)
> << "\n"
> ]);
>
> std::cout << sum << std::endl;
> return 0;
> }
>

Yes and I will do the same for the Boost.Lambda example.

Thanks.

--Lorenzo

--
View this message in context: http://boost.2283326.n4.nabble.com/local-Help-for-the-Alternatives-section-tp3408469p3414851.html
Sent from the Boost - Dev mailing list archive at Nabble.com.

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk