|
Boost Users : |
Subject: Re: [Boost-users] [Bind] Is this how to write it?
From: Ovanes Markarian (om_boost_at_[hidden])
Date: 2010-03-23 12:16:03
On Tue, Mar 23, 2010 at 2:19 PM, Robert Jones <robertgbjones_at_[hidden]>wrote:
>
> Thanks Ovanes - I'm sure you will understand that my real code is a bit
> more
> complicated then doubling ints! Since both bind and lambda are pretty much
> superceded by phoenix now, perhaps you could also supply the phoenix
> version?
>
> As far as I know boost::phoenix is not an officially released boost lib. It
is still part of boost::spirit library. There is no top level reference to
it. So I would not consider it for now to be a replacement for bind and
lambda. It might become, but don't rely on that. ;) Anyway here the
rewritten example:
#include <boost/spirit/home/phoenix/core.hpp>
#include <boost/spirit/home/phoenix/scope.hpp>
#include <boost/spirit/home/phoenix/operator.hpp>
#include <boost/spirit/home/phoenix/function.hpp>
#include <algorithm>
#include <vector>
#include <iterator>
#include <iostream>
using namespace std;
using namespace boost;
using namespace boost::phoenix;
using namespace boost::phoenix::arg_names;
using namespace boost::phoenix::local_names;
namespace ph = boost::phoenix;
int main( )
{
vector< int > v;
// generate vector values
int i=0;
generate_n(back_inserter(v), 100, ++ph::ref(i));
//create the output iterator
ostream_iterator<int> oiter(cout, ",");
copy(v.begin(), v.end(), oiter);
cout << endl;
// double each value in the vector
for_each(v.begin(), v.end(), arg1*=2);
copy(v.begin(), v.end(), oiter);
cout << endl;
}
Regards,
Ovanes
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net