フェーズ 7: トークンを区切る空白文字はもはや重要ではありません。各前処理トークンはトークンに変換されます。結果のトークンは、構文的および意味的に分析され、翻訳単位として翻訳されます。
フェーズ 8: 翻訳された翻訳単位とインスタンス化単位は、次のように結合されます。翻訳された各翻訳単位を調べて、必要なインスタンス化のリストを作成します。必要なテンプレートの定義が配置されています。これらの定義を含む翻訳単位のソースが利用可能である必要があるかどうかは、実装によって定義されます。インスタンス化単位を生成するために、必要なすべてのインスタンス化が実行されます。—終わりの注] インスタンス化が失敗した場合、プログラムは不正な形式です。
貼り付けたテキストを短くするために、メモの一部を削除しました。
C++ のコンパイル フェーズ 8 で翻訳単位が既に翻訳された後に、テンプレートの検索とインスタンス化が実行されるのはなぜですか? これらのステップは、2 フェーズの名前ルックアップを考慮して、フェーズ 7 で行うべきではありませんか?