Является ли эта регрессия лямбда действительной?
#include <functional>
#include <iostream>
int main() {
std::function<int(int)> g = [&g](int k) {
return (k ? k * g(k-1) : 1);
};
std::cout << g(10); // 3628800
}
Он кажется, компилируется и запускается нормально, но я нервничаю из-за закрытия более g
в том же самом утверждении, что я его инициализирую. Строгое действие по шкале от 1 до 10...?