boost-spirit-qi – qi :: uint_parser()应该解析什么?

boost-spirit-qi – qi :: uint_parser()应该解析什么?,第1张

概述从测试中我可以得到qi :: uint_parser< int>()与qi :: uint_相同.它们解析从0到UINT_MAX的整数. 我不明白的是qi :: uint_parser要求std :: numeric_limits< T> :: max()对数字基类型T有效.我不确定我是否应该假设qi :: uint_parser< int&gt ;()应该解析从0到std :: numeric_ 从测试中我可以得到qi :: uint_parser< int>()与qi :: uint_相同.它们解析从0到UINT_MAX的整数.

我不明白的是qi :: uint_parser要求std :: numeric_limits< T> :: max()对数字基类型T有效.我不确定我是否应该假设qi :: uint_parser< int&gt ;()应该解析从0到std :: numeric_limits< int> :: max()的整数而不是std :: numeric_limits< unsigned int> :: max().或者这个要求与解析器的范围无关?

解决方法 我认为这复制了 How to write a boost::spirit::qi parser to parse an integer range from 0 to std::numeric_limits<int>::max()?以及我记得在邮件列表上看到的问题.

由于它显然没有记录,你测试过吗?

Or is this requirement has nothing to do with the parser’s range?

我希望它是后者.我希望属性类型说明属性,而不是解析器.解析器解析,属性传播分配给属性.关注点分离.

属性传播可能会进行C语言的任何隐式转换.这实际上与在scanf(“%d”)中使用unsigned或使用std :: istream读取unsigned int没有什么不同:
见How to read unsigned int variables from file correctly,using ifstream?

我希望这一切都是真的,因为C结合了语言的核心价值

>只为您需要的东西付费
>程序员知道他在做什么.

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

免责声明:所有这些都是非权威性的.我甚至没有检查代码/文档.我认为这本质上是一个文档问题,在mailing list更好

总结

以上是内存溢出为你收集整理的boost-spirit-qi – qi :: uint_parser()应该解析什么?全部内容,希望文章能够帮你解决boost-spirit-qi – qi :: uint_parser()应该解析什么?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1225002.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存