为什么这个const const const声明有效

一位朋友让我解释原因

const const const const const int const i = 0; 

是有效的语法。 我拒绝对这个问题有任何想法。 虽然我很好奇它是否只是一个语法的东西?

编辑。 标签是C ++,我的朋友正在引用gcc,所以我应该添加C标签。

从n1256:

6.7.3 / 4

如果同一个限定符在同一个特定定义列表中出现不止一次,无论是直接地还是通过一个或多个typedef,行为都与它只出现一次相同。

在C ++中,这应该会出错。

从C ++ 03标准:

7.1.5 / 1 [dcl.type]

作为一般规则,在声明的完整decl-specifier-seq中最多允许一个类型说明符。 此规则的唯一例外情况如下:

– const或volatile可以与任何其他类型说明符组合使用。 但是,除非通过使用typedef(7.1.3)或模板类型参数(14.3)引入冗余cv限定符,否则将禁止冗余cv限定符,在这种情况下,将忽略冗余cv限定符。

从N3797(C ++ 11):

7.1.6 / 2 [dcl.type]

作为一般规则,在声明的完整decl-speci-seq或类型-peci-seq或trailing-type-speci-seq中,最多只允许一种类型指定。 此规则的唯一例外情况如下:

 — const can be combined with any type specifier except itself.