如何通过语法中使用的 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 &
显然phoenix::at_c
不能从中推断出tuple
类型phoenix::back
。
我的问题:在这种情况下如何结合凤凰语句?