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_;但它无法从属性类型获取解析器。为什么?

与您的other question相同 - 使用boost::fusion::vector代替。

它编译我(G ++ 4.6.1 /升压1.46.1),如果我添加以下到您的程序:

#include <boost/fusion/adapted/boost_tuple.hpp> 

我相信这个适应的boost ::元组作为合格提升: :融合序列,由序列化合物属性规则需要:

http://www.boost.org/doc/libs/1_48_0/libs/spirit/doc/html/spirit/qi/quick_reference/compound_attribute_rules.html

格雷厄姆