我有以下代码(大大简化):
#include<functional>
std::function<int()> Count() {
int x = 0;
return [=]() mutable { return x++; };
}
std::function<int()> Negate(std::function<int()> x) {
return [=]() { return -x(); };
}
int main() {
std::function<int()> n;
int z = 0;
if (true) {
auto c = Count();
z = c();
n = Negate(c);
z = n();
z = n();
}
z = n();
z = n();
}
我的问题是,对n的调用仅在if语句中有效。一旦if失去范围,c就会被破坏而n停止工作。有没有明智的方法来解决这个问题?优选非侵入性的。