ブーストスピリット自動パーサーはダブルスのタプルで失敗する
-
12-11-2019 - |
質問
次のコードでは、
.
// 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シーケンスになるように適応させることを信じています:
グラハム