【发布时间】:2019-02-09 22:16:34
【问题描述】:
我想编写一个返回自身的 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);
}
有没有办法做类似的事情?
【问题讨论】:
-
创建一个旧的正则函子?
-
@Jarod42 谢谢。我忘了我们现在可以在函数中定义类了。
-
相关:A Proposal to Add Y Combinator to the Standard Library。我引用:“C++11/14 lambdas 不鼓励递归:无法从 lambda 函数的主体中引用 lambda 对象。解决此问题的常见解决方法是使用 std::function”
-
@HolyBlackCat:写出
std::function的类型参数有点困难,有。 -
@SU3:你总是可以,只是在 C++11 之前你不能使用本地类类型作为模板类型参数。 (这不是本案的障碍)