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