从测试中我可以得到qi::uint_parser<int>()和qi::uint_是一样的。它们解析从0到UINT_MAX的整数。
我不明白的是,qi::uint_parser要求std::numeric_limits<T>::max()对数值基类型T有效。我不确定是否应该假定qi::uint_parser<int>()应该解析从0到std::numeric_limits<int>::max()而不是std::numeric_limits<unsigned int>::max()的整数。还是这一要求与解析器的范围无关?
发布于 2018-11-02 09:32:59
这个问题现在已经在boost 1.68.0上解决了。qi::uint_parser<int>()解析从0到std::numeric_limits<int>::max()的整数。精神x3也是固定的。
发布于 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<>模板拼凑出定制的组合,你就会告诉编译器“我知道我在做什么”。
免责声明:所有这些都是非权威的.我甚至没有检查代码/文档。我认为这本质上是一个文档问题,最好在邮寄名单上提出。
https://stackoverflow.com/questions/41020244
复制相似问题