最佳答案
可能的复制品:
C + + 0x 中的递归 lambda 函数
下面是一个普通的递归函数:
int fak(int n)
{
return (n <= 1) ? 1 : n * fak(n - 1);
}
如何编写这样一个递归函数作为 lambda 函数?
[](int n) { return (n <= 1) ? 1 : n * operator()(n - 1); }
// error: operator() not defined
[](int n) { return (n <= 1) ? 1 : n * (*this)(n - 1); }
// error: this wasn't captured for this lambda function
有没有表达式表示当前的 lambda,这样它就可以递归地调用自己?