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