Назад к задачамПолучайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Junior — Senior
5
Вычисление факториала на этапе компиляции при помощи шаблонов C++
Условие задачи
Задача состоит в реализации шаблонного класса 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).