有没有通用的方法来引用当前正在执行的函数?可以让我这样做的东西,例如,
([] (int n) -> int {
if (n <= 1) {
return 1;
}
return n * thisFunc(n - 1);
})()
主要是,我正在考虑匿名函数调用自己而不使用辅助命名函数。所以避免this。
答案 0 :(得分:0)
您可以在C ++ 11中使用函数指针或函数对象,但没有内置方法来引用函数。例如:
std::function<int (int)> myFun = [] (int i)
{
if i <= 1
{
return 1;
}
return i * myFun(i-1);
}
我认为递归调用lambda不是它们的用法。 Lambdas本质上是指提供内联功能,因此意味着相当简单。 更不用说您提供的示例可以非常容易地用循环替换,从而实现更高效的实现:
int result = 1;
while (i > 1)
{
result = result * i;
i--;
}