阶段 7:分隔标记的空白字符不再重要。每个预处理令牌都被转换为一个令牌。生成的标记在句法和语义上进行分析,并作为翻译单元进行翻译。
阶段 8:翻译后的翻译单元和实例化单元组合如下:检查每个翻译后的翻译单元以生成所需实例化的列表。找到所需模板的定义。是否需要包含这些定义的翻译单元的源是由实现定义的。执行所有必需的实例化以生成实例化单元。[注意:这些类似于翻译的翻译单元,但不包含对未实例化模板的引用和模板定义。— 尾注] 如果任何实例化失败,则程序是非良构的。
我删除了一些注释以缩短粘贴的文本。
为什么在 C++ 的编译阶段 8 中已经翻译了翻译单元之后,还要执行模板定位和实例化?考虑到两阶段名称查找,这些步骤不应该在第 7 阶段进行吗?