在C++中引用此函数
是否有任何常规方法来引用正在执行的当前函数?比如说让我这样做的东西在C++中引用此函数,c++,c++11,recursion,lambda,anonymous-function,C++,C++11,Recursion,Lambda,Anonymous Function,是否有任何常规方法来引用正在执行的当前函数?比如说让我这样做的东西 ([] (int n) -> int { if (n <= 1) { return 1; } return n * thisFunc(n - 1); })() 我主要考虑匿名函数在不使用辅助命名函数的情况下调用自己。所以要避免。您可以在C++11中使用函数指针或函数对象,但没有内置的方法来引用函数。例如: std::function<int (int)> myFun = [] (i
([] (int n) -> int {
if (n <= 1) {
return 1;
}
return n * thisFunc(n - 1);
})()
我主要考虑匿名函数在不使用辅助命名函数的情况下调用自己。所以要避免。您可以在C++11中使用函数指针或函数对象,但没有内置的方法来引用函数。例如:
std::function<int (int)> myFun = [] (int i)
{
if i <= 1
{
return 1;
}
return i * myFun(i-1);
}
将其存储到自动thisFunc=[]int n->int{…?据我所知,不命名递归lambda函数是不可能的。我也不明白你为什么不想命名它。如果函数是类内的运算符,你可以这样做*当然,这对lambdas没有帮助。@Rapptz也想到了这一点,但既然问题被标记为C++11…?你可能是对的em不应该被递归调用。我想到了JavaScript,还记得一些类似的机制,允许您引用当前函数。我实际上是想强调不要有过于复杂的lambda,递归本身并不一定复杂,尽管它可能是复杂的。
int result = 1;
while (i > 1)
{
result = result * i;
i--;
}