这个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级......?
我想写一个返回自己的lambda,所以我可以在现场多次调用它.但看起来lambda内部this不是指lambda而是指周围对象this,如果lambda是在成员函数内定义的话.
这是一个例子:
#include <iostream>
int main(int argc, char* argv[]) {
int a = 5;
[&](int b) {
std::cout << (a + b) << std::endl;
return *this;
}(4)(6);
}
Run Code Online (Sandbox Code Playgroud)
有没有办法做一些类似的事情?