Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
这段代码正确吗?
std::function<int(int)> f = [&f](int n) -> int { return n <= 1 ? 1 : n * f(n - 1); }; int x = f(42);
对象构造在作为对 lambda 的引用之前是否存在任何潜在问题?或者这段代码绝对正确?
按值捕获 f 会导致 msvc2010 编译器崩溃。
只要您遵循对存储在 lambdas 中的堆栈变量的引用规则,这应该可以正常工作。它是定义明确的 C++11 代码。