一个类型的多个cv分解

时间:2019-06-24 09:37:08

标签: c++ pointers language-lawyer type-systems

[conv.qual]/1中的示例说类型const int **有两个cv分解。

  

类型T的cv分解是cv_i和P_i的序列,使得T为

     

“ cv_0 P_0 cv_1 P_1⋯cv_ {n-1} P_ {n-1} cv_n U”

     

对于n≥0,其中每个cv_i是一组cv限定词([basic.type.qualifier]),并且   每个P_i是“指向”([dcl.ptr])的指针,“指向   类型”([dcl.mptr]),“ N_i的数组”或“的未知范围的数组”   ([dcl.array])。如果P_i指定一个数组,则元素类型上的cv限定符cv_ {i + 1}也被视为该数组的cv限定符cv_i。   [示例:由类型ID const int **表示的类型具有两个cv分解,以U表示“ int”和“指向const int的指针” 。   —示例]   在最长T的cv分解中,第一个cv限定词之后的n个元组,即cv_1,cv_2,…,cv_n,被称为T的cv限定签名。

为什么类型没有三个分解,第三个分解为n = 0,cv_0为空并且U =“指向const int的指针的指针?”

1 个答案:

答案 0 :(得分:4)

  

为什么类型没有三个分解

有,但是示例与规范部分略有不同步。通过this commit替换了cv-decomposition定义中的条件,从n > 0n ≥ 0,规范性措词最近进行了更改。

示例中解决此问题的PR是here