可能C++工作草案的措辞有缺陷(整数转换排名规则) [英] Probably defect in wording of C++ working draft (integer conversion rank rules)

查看:18
本文介绍了可能C++工作草案的措辞有缺陷(整数转换排名规则)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在working draft of standard C++中发现了一个可能的矛盾。首先我介绍事实,最后是我的问题。

建立整数折算等级时,[conv.rank]/1.1表示

没有两个带符号的整数类型[...]应具有相同的整数 转换等级,即使它们具有相同的表示形式。

[basic.fundamental]/8表示:

类型wchar_t是具有实现定义的不同类型 带符号或无符号整数类型作为其基础类型。

最后[conv.rank]/1.8

char8_tchar16_tchar32_twchar_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++工作草案的措辞有缺陷(整数转换排名规则)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆