¿Hay algún problema con la implementación de tal cierre (robado de python hack)?C++ closure hack
void function(int value) {
struct closure {
closure(int v = value) : value_(value) {}
private: int value_;
};
closure c;
}
Sobre la investigación adicional, aparece en funciones miembro, las variables locales no se pueden utilizar como valores por defecto, pero las variables de objeto pueden.
Eso es lo que hace la mayoría de los otros lenguajes entre bastidores cuando captura una variable local con una función local. Por ejemplo, descompile el código C# utilizando delegados anónimos y variables capturadas. –
Necesita pasarle valor al constructor explícitamente: el argumento predeterminado de una función no puede ser una variable local. Esa regla es para todas las funciones, no solo para las funciones miembro. –
@James, gracias, no conocía muy bien las reglas – Anycorn