在以下代码上,我正在尝试使用 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::fusion::vector

其他提示

它为ME编译(g ++ 4.6.1 / boost 1.46.1)如果我添加以下内容给您的程序:

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

我相信此适应提升::元组是符合序列复合属性规则所需的符合提升::融合序列:

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

graham

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top