当我需要实现递归 lambda 时,通常我这样做:
auto factorial = [](auto& self, int n) -> int {
return n == 0 ? 1 : n * self(self, n - 1);
};
并用 factorial(factorial, n)
调用它.但是,我看到有人声明参数 self
带类型 auto&&
而不是 auto&
.有什么不同?
最佳答案
What's the difference?
对示例的非常量的左值引用不能绑定(bind)到右值。
and call it with factorial(factorial, n)
如果您不打算传递右值,则差异没有实际意义。
关于c++ - 递归 lambda : pass by reference or universal reference?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67651303/