Finch, ну факториал считается допустим на этапе компиляции

метапрограммирование называется

что касется степени то она считается один раз для каждой из степеней, но уверен(почти наверняка) можно переделать шаблоны, так что степени бут расчитыватся исходя из значения предыдущей
а о вопросе нафига, а затем, что бы простую(и даже противную в своей простоте) задачу превратить в разминку для ума

шаблоны начал старатся применять сравнительно не давно, как только о них узнал(пару лет назад)
но думаю их можно применять с первых дней изучения, крайне полезный инструмент
подробно описаны тут
C++ Templates: The Complete Guide
By David Vandevoorde, Nicolai M. Josuttis
есть русский перевод
книгу иногда назвают "книгой по шаблонам с кубиками на обложке"
