1

Spirit x3 docsから次の例を試しました

#include <string>
#include <iostream>
#include "boost/spirit/home/x3.hpp"

namespace x3 = boost::spirit::x3;

int main()
{
  std::pair<double, double> p;
  std::string input("1.0 2.0");
  std::string::iterator input_pos = input.begin();
  x3::phrase_parse(input_pos, input.end(),
      x3::double_ >> x3::double_,
      x3::space, p);
}

私が得るエラーは

[...]/boost/boost-1.61.0/include/boost/spirit/home/x3/support/traits/move_to.hpp:62:18: error: no match for ‘operator=’ (operand types are ‘std::pair<double, double>’ and ‘std::remove_reference<double&>::type {aka double}’)
             dest = std::move(src);

pタイプに変更すると、doubleコンパイルして一致し2.0ます。これは明らかに私の意図ではありません。複数のバージョンの gcc (4.9、6.2、トランク) とブースト バージョン 1.61.0 でこれを試しました。誰かがコードのエラーを見つけない限り、これは構成の問題であるべきだと思います。

誰かが似たようなことを経験し、問題がどこにあるかを知っていますか?

4

0 に答える 0