Каково время жизни неявных функторов, производных от лямбды, в C ++? - PullRequest
9 голосов
/ 06 марта 2011

Вопрос прост: каково время жизни этого объекта функтора, который автоматически генерируется для меня компилятором C ++, когда я пишу лямбда-выражение?

Я сделал быстрый поиск, но не смог найти удовлетворительного ответа. В частности, если я пропущу где-нибудь лямбду, и там его вспомнят, а потом выйду из области видимости, что произойдет, когда моя лямбда будет вызвана позже и попытается получить доступ к моим выделенным в стеке, но уже не живым, захваченным переменным ? Или компилятор каким-то образом предотвращает такую ​​ситуацию? Или что?

1 Ответ

10 голосов
/ 06 марта 2011

Зависит от того, как вы фиксируете свои переменные. Если вы захватите их по ссылке ([&]), и они выйдут из области видимости, ссылки будут недействительными, как и обычные ссылки. Захватите их по значению ([=]), если хотите убедиться, что они превышают свои возможности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...