Bruken av templater i metaprogrammering skiller seg gjerne inn i to distinkte operasjoner. En template må bli definert, og en template som er definert må også instansieres. Definisjonen beskriver den generiske formen av koden som blir generert, mens instansieringa genererer koden beskrevet i definisjonen. Templatmetaprogrammer har ingen muterbare variabler som betyr at ingen variabler kan bli forandra etter at de har blitt initialisert. Det finnes ingen løkker, kun rekursjon. Derfor kan templatmetaprogrammering anses som en form for ren funksjonell programmering.