в c ++ primer 5th edition p393 написано:
Переменные, захваченные лямбда-выражением, являются локальными переменными
Затем в книге показано ostream
в качестве ссылочного параметра, захваченного лямбда-ссылкой. Это похоже на:
#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
, но может быть захвачена лямбда-выражением в то время как «Переменные, захваченные лямбда-выражением, являются локальными переменными». Что мне здесь не хватает? Кроме того, почему лямбда не может return os;
? В конце концов, не является ли os
объект, который существует вне лямбды и области действия foo
?