Какой тип у рекурсивной лямбды?
Это код определяет рекурсивный факториал с помощью игрек-комбинатора. Он компилируется и работает, действительно вычисляет факториал:
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
?
Можно ли этот код переписать в виде обычных функций, не лямбд?
Источник: Stack Overflow на русском