【发布时间】:2016-08-07 16:35:53
【问题描述】:
我正在尝试使用Boost.Sprit x3 将两个整数的序列匹配为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.:是的,这解决了问题。谢谢!发表您的评论作为答案,我会接受。
标签: c++ c++14 boost-fusion boost-spirit-x3