Задача ««Углубление» функции»

Реализовать с использованием метапрограммирования шаблон функции, который позволил бы применять заданную функцию многократно.

deep<f, 3>(10);    // То же, что и f(f(f(10)))
deep<g, 1>(x);     // g(x)