我发现其中可能存在矛盾标准C++工作草案 https://eel.is/c++draft/。首先我陈述事实,最后提出我的问题。
当。。。的时候整数转换等级成立,[转化排名]/1.1 http://eel.is/c++draft/basic.types#conv.rank-1.1 says
两个有符号整数类型 [...] 不得具有相同的整数
转换排名,即使它们具有相同的表示形式。
[基础.基础]/8 http://eel.is/c++draft/basic.types#basic.fundamental-8 says:
Type wchar_t
是一个独特的类型,具有实现定义的
有符号或无符号整数类型作为其基础类型。
最后,[转化排名]/1.8 http://eel.is/c++draft/basic.types#conv.rank-1.8:
的行列char8_t
, char16_t
, char32_t
, and wchar_t
应等于
其基础类型的排名([basic.fundamental])。
万一wchar_t
被实施为有符号整数类型,它与其基础类型具有相同的等级,基础类型是某些其他整数类型的不同类型。
因此,我们有两个具有相同秩的不同有符号整数类型,这与 [conv.rank]/1.1 矛盾。
这是一个实际的矛盾,还是我误解了两个可简单复制的类型在 C++ 中是不同的类型?
我们有两种不同的有符号整数类型
我在标准中没有看到这样的说法wchar_t
是“有符号整数类型”。或“无符号整数类型”。我看到哪里了它说它是“整数类型” https://timsong-cpp.github.io/cppwp/n4861/basic.fundamental#11:
类型 bool、char、wchar_t、char8_t、char16_t、char32_t 以及有符号和无符号整数类型统称为整型。整型的同义词是整型。
但“有符号整数类型”的定义不包括wchar_t
。也就是说,该标准明确允许存在既不是“有符号整数类型”也不是“无符号整数类型”的“整数类型”。
[conv.rank] 中的声明不适用于此类类型。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)