【发布时间】:2021-10-04 14:28:47
【问题描述】:
我的boost精神表达有问题。原始代码比较复杂,我做了一个小快照。 此代码在调试模式下按预期工作,并且在发布时没有,解析返回 false,但应该返回 true(我正在 Visual Studio 2019 上对其进行测试)
int main() {
namespace qi = boost::spirit::qi;
auto X19 = qi::lit(" ") | qi::lit(" 0.000000000000D+00");
auto i4 = qi::uint_;
string str = "1234 1234";
auto f = str.cbegin();
auto l = str.cend();
bool ret = qi::parse(f, l, ( i4 >> X19 >> i4 ));
}
下一个快照在两种模式下都运行良好:
int main() {
namespace qi = boost::spirit::qi;
auto i4 = qi::uint_;
string str = "1234 1234";
auto f = str.cbegin();
auto l = str.cend();
bool ret = qi::parse(f, l, ( i4 >> (qi::lit(" ") | qi::lit(" 0.000000000000D+00")) >> i4 ));
cout << ret << endl;
return ret;
}
我做错了什么,以这种方式划分长表达式? 谢谢
【问题讨论】:
标签: c++ boost-spirit boost-spirit-qi