Назад к задачам
Junior — Senior
5

Вычисление факториала на этапе компиляции при помощи шаблонов C++

Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

Задача состоит в реализации шаблонного класса Fac<N>, который вычисляет факториал числа N во время компиляции, используя рекурсивную специализацию шаблонов. Нужно продемонстрировать, что полученное значение действительно считается на этапе компиляции.

template <unsigned N>
class Fac;

template <unsigned N>
class Fac<N> {
    static constexpr int result = Fac<N - 1>::result * N;
};

template <>
class Fac<0> {
    static constexpr int result = 1;
};

Проверьте, что Fac<5>::result равен 120 и что вычисление происходит на этапе компиляции (например, с помощью static_assert).