Пример в [конв.качество]/1 говорит о том, что тип const int ** имеет два cv-разложения.
A cv-decomposition of a type T is a sequence of cv_i and P_i such that T is
“cv_0 P_0 cv_1 P_1 ⋯ cv_{n−1} P_{n−1} cv_n U”
for n≥0, where each cv_i is a set of cv-qualifiers ([basic.type.qualifier]), and each P_i is “pointer to” ([dcl.ptr]), “pointer to member of class Ci of type” ([dcl.mptr]), “array of N_i”, or “array of unknown bound of” ([dcl.array]). If P_i designates an array, the cv-qualifiers cv_{i+1} on the element type are also taken as the cv-qualifiers cv_i of the array. [ Example: The type denoted by the type-id
const int **has two cv-decompositions, taking U as “int” and as “pointer toconst int”. — end example ] The n-tuple of cv-qualifiers after the first one in the longest cv-decomposition of T, that is, cv_1,cv_2,…,cv_n, is called the cv-qualification signature of T.
Почему у типа нет трех декомпозиций, третья с n=0, cv_0 пустая и U="указатель на указатель на const int"?
@LanguageLawyer нет P_0, если n = 0.
Условие на n было изменено 4 месяца назад в этот коммит (wg21.ссылка/p1359#2051) (было n > 0). Похоже, они забыли обновить пример. Вы можете попробовать открыть тему или PR в github.com/cplusplus/проект
Хорошо, я отправил задачу github.com/cplusplus/draft/issues/2940





Why the type does not have three decompositions
Есть, но пример немного не соответствует нормативной части. Сравнительно недавно нормативная формулировка была изменена на этот коммит, заменив условие в определении cv-разложения с n > 0 на n ≥ 0.
PR, устраняющий проблему в примере, — здесь.
Тогда это не разложение?