首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++11声明‘::t i`?

C++11声明‘::t i`?
EN

Stack Overflow用户
提问于 2013-08-14 17:05:14
回答 2查看 253关注 0票数 10

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

代码语言:javascript
复制
typedef int T;
::T i;

如果是这样的话,它似乎不符合标准语法。

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

代码语言:javascript
复制
simple-type-specifier:
    nested-name-specifier_opt type-name

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

这是标准缺陷吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-14 17:13:40

这是一个规范缺陷。它是在最新的草案N3691 (PDF)中修正的,嵌套名称说明符是:

代码语言:javascript
复制
nested-name-specifier:
    ::
    type-name ::
    namespace-name ::
    decltype-specifier ::
    nested-name-specifier identifier ::
    nested-name-specifier templateopt simple-template-id ::

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

票数 13
EN

Stack Overflow用户

发布于 2013-08-14 17:15:30

因此,除了答案之外,仅作为澄清:::identifier引用全局命名空间中的(限定)标识符。因此,是的,所讨论的代码实际上是格式良好的.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18237947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档