Ricerca in due fasi: necessaria spiegazione

Cosa significa che il compilatore sta usando la ricerca in due fasi per compilare la class template?

I modelli sono compilati (almeno due volte):

  1. Senza Instantiation il codice template stesso viene controllato per la syntax.
    Ad esempio: eventuali errori di syntax come ; eccetera.

  2. Al momento dell’istanziazione (quando è noto il tipo esatto), il codice del modello viene ricontrollato per garantire che tutte le chiamate siano valide per quel particolare tipo.
    Ad esempio: il modello potrebbe richiamare chiamate a funzioni che potrebbero non essere presenti per quel particolare tipo.

Questo è chiamato come Two Phase Lookup.