1. ホーム
  2. c++

二相ルックアップ - 説明が必要です

2023-09-06 03:51:41

質問

コンパイラがテンプレートクラスをコンパイルするために二相ルックアップを使用しているというのはどういう意味ですか?

どのように解決するのですか?

テンプレートが2回コンパイルされます。

  1. インスタンス化しない場合、テンプレートコード自体の構文がチェックされます。

    例: 以下のようなあらゆる構文エラー ; など。

  2. インスタンス化の際(正確な型がわかっているとき)、すべての呼び出しがその特定の型に対して有効であることを確認するために、テンプレートコードが再度チェックされます。

    例: テンプレートは、その特定の型に存在しないかもしれない関数を順番に呼び出すかもしれません。

これは 二相ルックアップ。