C++ 11声明`:: T i`?

And*_*zos 10 c++ c++11

以下C++ 11翻译单元是否格式良好?

typedef int T;
::T i;
Run Code Online (Sandbox Code Playgroud)

如果是这样,它似乎与标准语法不匹配.

simple-type-specifier应匹配::T,但语法是:

simple-type-specifier:
    nested-name-specifier_opt type-name
Run Code Online (Sandbox Code Playgroud)

和一个nested-name-specifier不能::单独匹配,所以simple-type-specifier无法比拟::T.

这是标准缺陷吗?

Jam*_*lis 13

这是规格缺陷.它在最新的草案N3691(PDF)中修复,其中嵌套名称说明符是:

nested-name-specifier:
    ::
    type-name ::
    namespace-name ::
    decltype-specifier ::
    nested-name-specifier identifier ::
    nested-name-specifier templateopt simple-template-id ::
Run Code Online (Sandbox Code Playgroud)

(在C++ 11中,缺少第一个生产,嵌套名称说明符 - > ::.)