Y a-t-il un problème avec cette implémentation de fermeture (volée à partir de python hack)?Fermeture C++ hack
void function(int value) {
struct closure {
closure(int v = value) : value_(value) {}
private: int value_;
};
closure c;
}
Après enquête, il apparaît dans les fonctions membres, les variables locales ne peuvent pas être utilisées comme valeurs par défaut, mais objet variables peuvent.
C'est ce que font la plupart des autres langages en coulisses lorsque vous capturez une variable locale avec une fonction locale. Par exemple, décompilez le code C# en utilisant des délégués anonymes et des variables capturées. –
Vous devez transmettre explicitement une valeur au constructeur: l'argument par défaut d'une fonction ne peut pas être une variable locale. Cette règle s'applique à toutes les fonctions, pas seulement aux fonctions membres. –
@James, merci je ne connaissais pas très bien les règles – Anycorn