Un modello č un po ' come una macro. Come con una macro, invocando un modello di espansione (con sostituzione di parametro appropriato) provoca al codice che hai scritto. Tuttavia, un modello va oltre questo per consentire la creazione di nuove classi basate sui tipi passati come parametri. Queste nuove classi implementano modalitą indipendente dai tipi di esegue l'operazione č espresso nel codice del modello.
Modello librerie come ATL differiscono da tradizionale delle librerie di classi C++ che in genere vengono forniti solo come codice sorgente (o come codice sorgente con un po' di supporto Runtime) e non sono intrinsecamente o necessariamente gerarchiche in natura. Piuttosto che deriva da una classe per ottenere la funzionalitą che voglia, si crea un'istanza di una classe da un modello.