Supongamos que uso una lambda como función de devolución de llamada, y cuando creo la lambda, capturo una variable de función local por referencia. Ahora supongamos que el objeto lambda no se ejecuta hasta que la variable de función local se salga del alcance. ¿Lo que pasa?¿Qué sucede si capturo una variable local por referencia y sale del alcance?
Me doy cuenta de que sería muy estúpido que alguien lo haga si existe la posibilidad de que ocurra, pero estoy casi seguro de que alguien terminará haciéndolo.
No estoy familiarizado con C++ 11, pero para cualquier otro idioma que he usado, capturar la variable por definición significa que no queda fuera del alcance mientras se capture (hay [ referencias indirectas). –
No en C++. Devolver una lambda que capture una variable local por referencia significa que la referencia ya no será válida una vez que la función envolvente regrese. Comportamiento indefinido. –
Las funciones en sí mismas son estáticas y, por lo tanto, siempre válidas. Pero un 'void (**)()' * puede * convertirse en colgante. ¿Qué más? –