Boost.Sprit x3を使用して、2 つの整数のシーケンスをstd::pair<int, int>
. ドキュメントから判断すると、次のコードがコンパイルされるはずです。
#include <string>
#include <boost/config/warning_disable.hpp>
#include <boost/spirit/home/x3.hpp>
int main()
{
using namespace boost::spirit::x3;
std::string input("1 2");
std::pair<int, int> result;
parse(input.begin(), input.end(), int_ >> int_, result);
}
ただし、最初の整数にのみ一致します。に変更std::pair<int, int> result;
しint result;
てから print すると、出力としてresult
取得1
されます。
なぜそれが起こっているのですか?2 つの整数int_ >> int_
に一致する(そして属性として設定する)パーサーを定義する正しい方法ではありませんか?