Boost Spirit自动解析器不能执行双元组操作
问题描述:
在下面的代码中,我尝试使用Boost Spirit Auto Parser作为一个或两个双精度值,但它不能编译。我在这里做错了什么?Boost Spirit自动解析器不能执行双元组操作
// file main.cpp
#include <boost/tuple/tuple.hpp>
#include <boost/spirit/include/qi.hpp>
namespace qi = boost::spirit::qi;
int main()
{
boost::tuple<double, double> p;
char* i = 0;
qi::phrase_parse(i, i, p, qi::space);
// qi::phrase_parse(i, i, qi::double_ >> qi::double_, qi::space, qi::skip_flag::postskip, p);
return 0;
}
的注释行编译,所以它接受boost::tuple<double, double>
作为属性类型的qi::double_ >> qi::double_
;但它无法从属性类型获取解析器。为什么?
答
它编译我(G ++ 4.6.1 /升压1.46.1),如果我添加以下到您的程序:
#include <boost/fusion/adapted/boost_tuple.hpp>
我相信这个适应的boost ::元组作为合格提升: :融合序列,由序列化合物属性规则需要:
格雷厄姆