【发布时间】:2011-11-14 12:46:47
【问题描述】:
在哪里可以找到符合 C++ 标准的编译器必须应用的规则列表才能执行名称解析(包括重载)?
我想要自然语言算法或流程图之类的东西。
C++ 标准当然有这一套规则,但它是随着新语言语句的引入而建立起来的,结果很难记住。
长话短说,我想知道对“编译器在看到名称 'A' 时会做什么?”这个问题的完整而详细的答案
我知道 C++ 就是“我们在 X 时这样做,但在 Z 成立时不这样做”所以,我在问是否有可能使它更线性。
编辑:我正在起草这个主题的草稿,一旦发布,可能会集体改进。但是,我这几天很忙,可能需要一些时间才能发布一些内容。如果有人感兴趣,我会将“原始 txt 文件上的个人笔记”推广到更好的内容并发布。
【问题讨论】:
-
C++ 模板的附录 B - 完整指南 是关于重载解决方案的。 “在本附录中,我们对重载解决规则进行了相当详细的调查。但是,由于此过程的复杂性,我们并未声称涵盖该主题的所有部分。”
-
确实,标准中的规则在整个文档中是分散的并且高度耦合。
-
我将在这个问题可用时为其添加赏金,我希望认真参考名称查找和重载解析规则,比标准更具可读性。
-
我想指出,该过程分为两个不同的阶段。 1.名称查找/ 2.重载分辨率。这个问题已经很宽泛了,我觉得如果把它分成两部分会更有说服力。我认为它们(无论如何)是独立应用的,重载决议只发生在查找名称的集合上。
-
@Matthieu M. 这是真的。重载作用于名称解析的结果(尽管名称查找在找到第一个可能的多个名称的范围内结束)。然而,我的意图是两者都有一个(大)数字。
标签: c++ rules token-name-resolution