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++工作草案的措辞有缺陷(整数转换排名规则)
基础教程推荐
- C++ 程序在执行 std::string 分配时总是崩溃 2022-01-01
- C++ 标准:取消引用 NULL 指针以获取引用? 2021-01-01
- 如何定义双括号/双迭代器运算符,类似于向量的向量? 2022-01-01
- 什么是T&&(双与号)在 C++11 中是什么意思? 2022-11-04
- 调用std::Package_TASK::Get_Future()时可能出现争用情况 2022-12-17
- 设计字符串本地化的最佳方法 2022-01-01
- 运算符重载的基本规则和习语是什么? 2022-10-31
- 如何在 C++ 中处理或避免堆栈溢出 2022-01-01
- 您如何将 CreateThread 用于属于类成员的函数? 2021-01-01
- C++,'if' 表达式中的变量声明 2021-01-01