如何通过语法中使用的boost :: phoenix访问元组作为向量的后面元素。我想设置向量的后面元素的元组的第二个元素(之前添加)
例如
typedef boost::tuple<std::string, std::string, std::string> var_type;
typedef std::vector<var_type> vars_type;
template <typename Iterator>
struct some_grammar : qi::grammar<Iterator, vars_type()>
{
some_grammar() :
some_grammar::base_type(some_rule)
{
.....
.....
.....
//somewhere inside grammar
.....
some_rule = ... >> -some_rule2
[
phoenix::at_c<2, var_type>
(
phoenix::back(qi::labels::_val)
) = qi::labels::_1
] >>
qi::lit(',');
}
}
在我的msvc 2008错误中
boost :: phoenix :: at_c':无法将参数1从'boost :: phoenix :: actor'转换为'const var_type&amp;
显然phoenix::at_c
无法从tuple
中推断出phoenix::back
类型。
我的问题:如何在这种情况下组合凤凰语句?