文法で使われている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
推測することは明らかにできません。tuple
phoenix::back
私の質問:この場合、鳳凰文をどのように組み合わせるのですか??