【发布时间】:2014-05-03 04:52:05
【问题描述】:
我从我感兴趣的问题开始我的帖子:
Q1:声明是否在翻译单元中引入了一个或多个表示类型的名称?
Q2:(如果Q1的答案是肯定的)编译器如何确定声明引入的名称类型?考虑以下声明:
当我开始阅读 c++ 工作草案的第 3 条时,就会出现这个问题。
实体是值、对象、引用、函数、枚举器、类型、 类成员、模板、模板特化、命名空间、参数 包,或者这个。
名称是标识符的使用(2.11), operator-function-id (13.5),literal-operator-id (13.5.8),转换 function-id (12.3.2) 或 template-id (14.2),表示实体或 标签(6.6.4、6.1)。
List<Observer *> *_observers;
此声明将_observers 引入当前范围。我想了解编译器如何确定_observers 的类型?我对c++ 规范中描述的正式算法感兴趣。
【问题讨论】:
-
不清楚你在问什么。标准中给出了类型的规范。标准中没有给出解析C++的算法。
-
名称的每一种用法都在注明的章节编号中进行了描述,并包含在您从中复制发布文本的标准中。编译器如何实现这些使用定义和名称介绍完全取决于供应商;该标准没有提出这样的“算法”来实现这一点。
-
@MattMcNabb 你有规范的证明链接吗?
-
证明是:
extern int i;是一个声明。i是一种类型吗? -
@user3521733 好的。那么实体
i到底是什么意思呢?
标签: c++ types declaration names