这个lambda递归有效吗?
#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
}
Run Code Online (Sandbox Code Playgroud)
它似乎编译并运行正常,但我很担心g在我初始化它的同一声明中结束.严格有效的1-10级......?