Sobes.tech
Middle — Senior
68

Компиляторное вычисление факториала в шаблоне без static‑контекста

Task condition

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


template <unsigned N>
struct Fac {
    constexpr int get() const {
        return N * Fac<N - 1>().get();
    }
};

template <>
struct Fac<0> {
    constexpr int get() const {
        return 1;
    }
};

static_assert(Fac<5>().get() == 120);