我目前有这个测试用例:
std::function<void(void)> getFunc(int n) {
return [&]() { std::cout << "N: " << n << std::endl; };
}
int main() {
auto func = getFunc(3);
func();
return 0;
}
从最初的阅读来看,人们期望会打印N: 3
,但是问题在于,一旦函数getter超出范围,n
变量也会超出范围,从而导致不确定的行为。 (在我的特定情况下,我得到了输出N: 32766
。)如何解决这个问题,并实际上将n
的值注入到我的lambda中以供以后使用?