1

文法で使われているboost::phoenixでベクトルの後ろの要素としてタプルにアクセスするにはどうすればいいですか?vector(先ほど追加した)の後要素のタプルの2番目の要素を設定したい

例えば

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推測することは明らかにできません。tuplephoenix::back

私の質問:この場合、鳳凰文をどのように組み合わせるのですか??

4

0 に答える 0