Пример: вычисление факториала
Задача: Вычислить произведение чисел от 1 до N во время компилляции.
Решение этой задачи сводится к факту, что каждое последующее значение зависит от предыдущего: P(N) = N * P(N-1). Исключение составляет только начальное значение, то есть для N = 1 => P(N) = 1. Шаблоны позволяют реализовать рекурсивное инстанциирование (определение) типов при помощи специализации шаблонов.
При помощи шаблонов задача решается следующим образом (tpl_product.cpp):
tpl_factorial.cpp
Использование рекурсии в шаблонах ограничено, так как компилятор при специализации опускается до определенного уровня (зависит от настроек компилятора). Таким образом, произведение 100 первых чисел вычислить уже не удасться.
Last updated