을 사용하여 두 개의 정수열을 std::pair<int, int>
에 일치 시키려고합니다. 문서에 의해 판단, 다음 코드는 컴파일해야합니다두 개의 정수로 구성된 시퀀스를`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;
으로 변경하고 result
을 인쇄하면 1
이 출력됩니다.
왜 그런 일이 발생합니까? int_ >> int_
은 과 일치하는 구문 분석기를 정의하는 올바른 방법이 아니며 속성으로 설정합니다. 두 개의 정수가 필요합니까?
'std :: pair'를 수정 한 Boost.Fusion 헤더를 포함시켜야 할 것 같습니다. –
@ T.C .: 예, 문제가 해결되었습니다. 감사! 대답으로 의견을 게시하면 받아 들일 것입니다. –