Probably defect in wording of C++ working draft (integer conversion rank rules)(可能C++工作草案的措辞有缺陷(整数转换排名规则))
问题描述
我在working draft of standard C++中发现了一个可能的矛盾。首先我介绍事实,最后是我的问题。
建立整数折算等级时,[conv.rank]/1.1表示
[basic.fundamental]/8表示:
没有两个带符号的整数类型[...]应具有相同的整数
转换等级,即使它们具有相同的表示形式。
类型
wchar_t
是具有实现定义的不同类型
带符号或无符号整数类型作为其基础类型。
最后[conv.rank]/1.8:
char8_t
、char16_t
、char32_t
和wchar_t
的级别应等于 它们的基础类型的排名([Basic.Basic])。
如果wchar_t
被实现为有符号整数类型,它将与其基础类型具有相同的排名,后者是某个其他整数类型的不同类型。
因此,我们有两个不同的带符号整数类型,具有相同的秩次,这与[Conv.rank]/1.1相矛盾。
这是一个实际的矛盾,还是我误解了C++中两个简单可复制的类型是不同的类型?
推荐答案
我们有两种不同的带符号整数类型
我在标准中看不到wchar_t
是带符号的整数类型。或无符号整数类型。我明白了it says that it is an "integer type":
类型bool、char、wchar_-t、char8_-t、char16_-t、char32_-t以及带符号和无符号整数类型统称为整型。整型的同义词是整型。
但";带符号整数类型&的定义不包括wchar_t
。也就是说,该标准明确允许存在既不是有符号整数类型也不是无符号整数类型的整数类型。
并且[Conver.rank]中的语句不适用于此类类型。
这篇关于可能C++工作草案的措辞有缺陷(整数转换排名规则)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:可能C++工作草案的措辞有缺陷(整数转换排名规则)


- XML Schema 到 C++ 类 2022-01-01
- 使用 __stdcall & 调用 DLLVS2013 中的 GetProcAddress() 2021-01-01
- 从父 CMakeLists.txt 覆盖 CMake 中的默认选项(...)值 2021-01-01
- 将 hdc 内容复制到位图 2022-09-04
- DoEvents 等效于 C++? 2021-01-01
- 哪个更快:if (bool) 或 if(int)? 2022-01-01
- 将函数的返回值分配给引用 C++? 2022-01-01
- OpenGL 对象的 RAII 包装器 2021-01-01
- 如何提取 __VA_ARGS__? 2022-01-01
- GDB 不显示函数名 2022-01-01