首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >qi::uint_parser<int>()应该解析什么?

qi::uint_parser<int>()应该解析什么?
EN

Stack Overflow用户
提问于 2016-12-07 14:37:58
回答 2查看 217关注 0票数 4

从测试中我可以得到qi::uint_parser<int>()qi::uint_是一样的。它们解析从0UINT_MAX的整数。

我不明白的是,qi::uint_parser要求std::numeric_limits<T>::max()对数值基类型T有效。我不确定是否应该假定qi::uint_parser<int>()应该解析从0std::numeric_limits<int>::max()而不是std::numeric_limits<unsigned int>::max()的整数。还是这一要求与解析器的范围无关?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-02 09:32:59

这个问题现在已经在boost 1.68.0上解决了。qi::uint_parser<int>()解析从0std::numeric_limits<int>::max()的整数。精神x3也是固定的。

https://github.com/boostorg/spirit/pull/297

票数 0
EN

Stack Overflow用户

发布于 2016-12-07 22:58:30

我认为这重复了*max()?以及我记得在邮件列表中看到的问题。

既然它显然没有记录下来,你测试过了吗?

还是这一要求与解析器的范围无关?

我希望是后者。我希望属性类型反映的是属性,而不是解析器。解析器解析,属性传播分配给属性。分离关注点。

属性传播很容易执行C++语言将进行的任何隐式转换。这实际上与在unsigned中使用scanf("%d")或使用std::istream读取无符号int没有什么不同:参见如何使用ifstream从文件中正确读取无符号int变量?

我希望这一切都是真的,因为C++结合了

  • 只为你需要的东西付钱
  • 程序员知道他在做什么。

事实上,这就是问题的根源:精神定义了qi::int_qi::uint_和朋友。如果你使用底层的qi::[u]int_parser<>模板拼凑出定制的组合,你就会告诉编译器“我知道我在做什么”。

免责声明:所有这些都是非权威的.我甚至没有检查代码/文档。我认为这本质上是一个文档问题,最好在邮寄名单上提出。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41020244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档