Sha*_*our 14
应该允许在此uniform_int_distribution <unsigned char>上有一个库工作组尚未解决的问题,除其他外:
我不知道有什么
<random>
工作与16位整数,但失败的8位整数,所以我怀疑,IntType
并UIntType
可以简单地扩展到允许char系列.或者,这种变化可能仅限于uniform_int_distribution,它绝对是安全的.一个<random>
专家应该决定其变化是最好的.
建议的解决方案是更改限制以允许标准整数类型:
IntType
除非相应的模板参数是cv-unqualified且是标准整数类型(3.9.1 [basic.fundamental],否则具有名为的模板类型参数是未定义的
和:
UIntType
除非相应的模板参数是cv-unqualified且是标准的无符号整数类型(3.9.1 [basic.fundamental]),否则具有名为的模板类型参数是未定义的
这会获得unsigned/signed char,尽管不是uint8_t或int8_t,但它们可能是等效的.省略了扩展的整体类型,以简化措辞并最大限度地达成共识:
这也排除了扩展的整数类型和宽字符类型,这些类似于最好的东西.我不反对支持这些类型; 我只是选择了这个来简化措辞,并希望最大限度地达成共识.
注意,这是排除的,char
因为它是实现定义是否char
签名.
请注意,此主题也在std讨论列表中显示.
Jonathan Wakely指出,该提案存在争议,并评论说他上次讨论的说明包括以下内容:
这是非常有意的,不支持单字节整数,而不是意外遗漏,所以我们应该小心改变它而不咨询C++ 11的设计者
他建议添加一个成员来random_device
提供单个字节,这似乎是一个合理的选择.