Qual è la durata dei funtori impliciti derivati ​​da lambda in C ++?

La domanda è semplice: qual è la durata di quell’object funtore che viene automaticamente generato dal compiler C ++ quando scrivo un’espressione lambda?

Ho fatto una rapida ricerca, ma non ho trovato una risposta soddisfacente. In particolare, se passo il lambda da qualche parte, e viene ricordato lì, e poi esco dal campo di applicazione, cosa succederà quando il mio lambda verrà chiamato più tardi e tenterà di accedere alle variabili catturate dallo stack, ma non più vivi, catturate ? O il compilatore impedisce in qualche modo una tale situazione? O cosa?

Dipende dal modo in cui acquisisci le tue variabili. Se li catturi per riferimento ( [&] ) e escono dall’ambito, i riferimenti non saranno validi, proprio come i riferimenti normali. Catturali per valore ( [=] ) se vuoi assicurarti che realizzino il loro scopo.