以下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中,缺少第一个生产,嵌套名称说明符 - > ::.)