[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
的指针的指针?”
答案 0 :(得分:4)
为什么类型没有三个分解
有,但是示例与规范部分略有不同步。通过this commit替换了cv-decomposition定义中的条件,从n > 0
到n ≥ 0
,规范性措词最近进行了更改。
示例中解决此问题的PR是here。