C++ 11 gcc:声明中的显式限定条件?标准参考?

And*_*zos 6 c++ gcc c++11

使用gcc 4.7编译以下C++ 11程序时:

extern int i;
int ::i;

int main()
{
}
Run Code Online (Sandbox Code Playgroud)

gcc抱怨说:

error: explicit qualification in declaration of `i`
Run Code Online (Sandbox Code Playgroud)

这是不符合要求的行为吗?标准中的哪个部分被视为格式错误?

8.3p1似乎表明应该允许:

如果限定符是global :: scope解析运算符,则declarator-id引用在全局命名空间作用域中声明的名称.

更新:

从N3485 8.3p1:

声明符列表出现在可选(第7节)decl-specifier-seq(7.1)之后.每个声明符只包含一个declarator-id; 它命名声明的标识符.除了声明某些特殊函数(12.3,12.4,13.5)以及声明模板特化或部分特化(14.7)之外,声明符中出现的非限定id应该是一个简单的标识符.当declarator-id被限定时,声明应引用先前声明的限定符所引用的类或命名空间的成员(或者,在命名空间的情况下,引用该命名空间的内联命名空间集的元素)(7.3 .1))或其专业化; 该成员不仅仅是由声明者id的嵌套名称说明符所指定的类或命名空间范围内的using声明引入的.限定的声明符id的嵌套名称说明符不应以decltype-specifier开头.[注意:如果限定符是global :: scope解析运算符,则declarator-id引用在全局命名空间范围内声明的名称. - 结束注释]声明符id后面的可选attribute-specifier-seq附加到声明的实体.

jro*_*rok 12

下一句话说(在n3337):

甲声明符-ID不得合格音响ED除了一个成员函数或其类外的静态数据成员,其命名空间的外面去音响nition或显式实例命名空间的函数或变量的部件构成,或显式的去连接nition的去连接nition在其命名空间之外的特化,或者是另一个类或命名空间的成员的友元函数的声明.

在例外中没有提到全局变量的定义.