在 c++primer 第 5 版 p393 中写道:
lambda 捕获的变量是局部变量
然后,本书将 显示ostream
为引用参数,由 lambda 通过引用捕获。这是相似的:
#include <iostream>
using namespace std;
void foo(ostream &os) {
auto f = [&os]() { os << "Hellow World !" << endl; //return os;
};
f();
}
void main() {
foo(cout);
system("pause");
}
我遇到的问题是,这里的 os 不是局部变量foo
,它存在于foo
的范围之外,但它可以被 lambda 捕获,而“由 lambda 捕获的变量是局部变量”。我在这里想念什么?另外,为什么 lambda 不能return os;
?毕竟,不是os
存在于 lambda 和foo
' 范围之外的对象吗?