1 |
|
---|
2 | #include <boost/phoenix.hpp>
|
---|
3 |
|
---|
4 | #include <vector>
|
---|
5 |
|
---|
6 | int main()
|
---|
7 | {
|
---|
8 | namespace phx = boost::phoenix;
|
---|
9 | using namespace phx::arg_names;
|
---|
10 | using phx::ref;
|
---|
11 | using phx::begin;
|
---|
12 | using phx::lambda;
|
---|
13 | using phx::nothing;
|
---|
14 |
|
---|
15 | int data[] = {2,4,6,8,10};
|
---|
16 | std::vector<int> veca(data, data+5);
|
---|
17 | std::vector<int> vecb(veca.size());
|
---|
18 | double a,b,c,d,e,f,g,h,i,j;
|
---|
19 |
|
---|
20 | //Works fine
|
---|
21 | phx::transform(ref(veca), begin(ref(vecb)), lambda[arg1+1])
|
---|
22 | (a,b,c,d,e,f,g,h,i,j);
|
---|
23 | //
|
---|
24 | // //Works fine
|
---|
25 | int acc = phx::accumulate(ref(veca), phx::construct<int>())
|
---|
26 | (a,b,c,d,e,f,g,h,i,j);
|
---|
27 | //
|
---|
28 | // //Doesn't compile
|
---|
29 | phx::for_each(ref(veca), lambda[arg1+1])
|
---|
30 | (a, b, c) /*works if you change to 0,1 or 2 arguments*/;
|
---|
31 | }
|
---|