given a phoenix code [a(),b()], I think the correct behavior is called a() then b() respectively, but obviously in boost 1.47 only second function is called, this is what it is supposed to be? see the below code:
struct employee_parser : qi::grammar<Iterator, employee(), ascii::space_type>
{
employee_parser() : employee_parser::base_type(start)
{
using qi::int_;
using qi::lit;
using qi::double_;
using qi::lexeme;
using ascii::char_;
using ascii::string;
using namespace qi::labels;
using boost::phoenix::ref;
using boost::phoenix::val;
quoted_string %= (lexeme['"' >> +(char_ - '"') >> '"' ]) ;
start %= (
lit("employee")
>> '{'
>> int_ >> ','
>> quoted_string [std::cout<<ref(text1)<<" \n",ref(text1) = _1] >> ','
>> quoted_string >> ','
>> double_
>> '}' )
;
}
qi::rule<Iterator, std::string(), ascii::space_type> quoted_string;
qi::rule<Iterator, employee(), ascii::space_type> start;
std::string text1;
};
why the first part isn't called? is it bug and fixed in latest boost library?
std::cout<<ref(text1)<<" \n"