Какой тип у рекурсивной лямбды?

Рейтинг: 2Ответов: 0Опубликовано: 14.01.2023

Это код определяет рекурсивный факториал с помощью игрек-комбинатора. Он компилируется и работает, действительно вычисляет факториал:

auto y_comb = [](auto f, int n) { return f(f, n); };

auto fact_rec = [](auto f, int n) -> int {
    return (n > 0) ? n * f(f, n - 1) : 1;
};

auto fact = [y_comb, fact_rec](int n) { return y_comb(fact_rec, n); };

Я хочу переписать этот код в виде функций, но не могу подобрать тип для функции-аналога fact_rec.

Какой тип у лямбды fact_rec?

Что нужно написать в std::function чтобы поместить туда fact_rec?

Можно ли этот код переписать в виде обычных функций, не лямбд?

Ответы

Ответов пока нет.