1

如何通过语法中使用的 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

我的问题:在这种情况下如何结合凤凰语句?

4

0 回答 0