Двухэтапный поиск - требуется объяснение

Что означает, что компилятор использует двухфазный поиск для компиляции класса шаблона?

Ответ 1

Шаблоны скомпилированы (по крайней мере) дважды:

  • Без Instantiation сам код шаблона проверяется на синтаксис.
    Например: любые ошибки синтаксических ошибок, такие как ; и т.д.

  • Во время создания экземпляра (когда известен точный тип) код шаблона проверяется снова, чтобы гарантировать, что все вызовы действительны для этого конкретного типа.
    Например: шаблон может вызвать вызов функций, которые могут отсутствовать для этого конкретного типа.

Это называется Двухфазным поиском.