以下C++ 11转换单元格式正确吗?

typedef int T;
::T i;

如果是这样,它似乎与标准语法不匹配。
simple-type-specifier应该匹配::T,但是语法是:
simple-type-specifier:
    nested-name-specifier_opt type-name

并且nested-name-specifier不能单独匹配::,因此simple-type-specifier不能匹配::T

这是标准缺陷吗?

最佳答案

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

nested-name-specifier:
    ::
    type-name ::
    namespace-name ::
    decltype-specifier ::
    nested-name-specifier identifier ::
    nested-name-specifier templateopt simple-template-id ::

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

07-24 20:45