
Eric Niebler wrote:
Joel de Guzman wrote:
Docs: http://tinyurl.com/77pz5
In "Block Statement", (http://tinyurl.com/b25hr) you show how to use the comma operator to sequence statements. I see problems here, especially when calling a function that takes a predicate that isn't the last argument. For instance, how would you use Phoenix to create a filter_iterator?
iterator begin, end; ... boost::make_filter_iterator(arg1 > 5, begin, end); // Oops! ---------------------------^
Isn't that comma going to be Phoenix's overloaded comma?
No. If you want the comma operator to fire, you have to place them inside parentheses: boost::make_filter_iterator((arg1 > 5, blah1, blah2), begin, end); I remember a very early version of Phoenix named SE (short for semantic expressions) and Spirit where I used the () operator instead of the [] operator. For compound expressions, I had to use the double parens. Example: if_(c) (( do_this, then_than, finaly_that )) Otherwise, C++ will complain. Regards, -- Joel de Guzman http://www.boost-consulting.com http://spirit.sf.net