运维开发网

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

运维开发网 https://www.qedev.com 2020-03-24 21:40 出处:网络 作者:运维开发网整理
从测试中我可以得到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更好

0

精彩评论

暂无评论...
验证码 换一张
取 消