Jan*_*šil 10 c++ type-systems pointers language-lawyer
[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]),“指向类型为Ci的类的成员的指针”([dcl.mptr]),“ N_i数组”或“的未知范围的数组”([dcl.array])。如果P_i指定一个数组,则元素类型上的cv限定符cv_ {i + 1}也被视为该数组的cv限定符cv_i。[?示例:由type-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?