递归 lambda 通过引用
recursive lambda via reference
这段代码正确吗?
std::function<int(int)> f = [&f](int n) -> int
{
return n <= 1 ? 1 : n * f(n - 1);
};
int x = f(42);
在对象构造作为对 lambda 的引用传递之前,是否存在任何潜在问题?或者这段代码绝对正确?
按值捕获 f 会导致 msvc2010 编译器崩溃。
这应该可以正常工作,只要您遵循对存储在 lambda 中的堆栈变量的引用规则。它是定义明确的 C++11 代码。
相关文章:
- C++Boost Asio Pool线程,带有lambda函数和传递引用变量
- c++ lambda:柯里和函数:使用按值捕获与按引用捕获返回不同的结果
- 引用捕获和在 lambda 中通过引用发送参数有什么区别 (C++)
- 修改在 std::future 的 lambda 中引用捕获的值
- clang++ 9.0 如何神奇地治愈 lambda 中的悬空引用使用?
- 为什么 lambda nullptr 取消引用在这种情况下有效?
- 仅通过引用捕获的 lambda 表达式是否保证不会抛出?
- 当lambda执行时,C++lambda捕获的引用具有不同的值
- 无法通过引用捕获 lambda 中的成员变量
- 在 lambda 中从引用类型捕获的值的类型,不使用通用捕获
- 将引用和指针传递给 lambda
- 为什么访问我的引用捕获变量会导致我的 lambda 函数出现段错误?
- 我无法通过引用捕获传递 lambda
- 我们应该在 lambda 中通过常量引用来捕获吗?
- 在 lambda 中通过引用捕获thread_local变量无法按预期工作
- lambda 表达式中引用捕获的 constexpr 变量和非显式捕获的 constexpr 变量之间的区别
- 列出生成器(lambda的向量)会导致通过引用捕获的非常奇怪的行为
- 无法使用带有常量引用的 lambda 对 std::vector 进行排序
- 为什么在重载的 ostream 运算符中引用 lambda 中的向量会导致错误
- 通过复制和decltype引用Lambda捕获