質問

次のコードでは、ブーストスピリットオートパーサーシーケンスまたは2倍の2倍の場合はコンパイルされません。私はここで何を間違っていますか?

// 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_を受け入れます。ただし、属性タイプからパーサーを取得できません。なぜ?

役に立ちましたか?

解決

あなたのhref="https://stackoverflow.com/questions/9448120/boost-spirit-char-parser">代わりにboost::fusion::vectorを使用します。

他のヒント

私のためにコンパイルする(G ++ 4.6.1 / Boost 1.46.1)プログラムに次のものを追加した場合:

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

私は、これはブースト::タプルが準拠のブースト:: Fusionシーケンスになるように適応させることを信じています:

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

グラハム

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top