Czy jest jakiś problem z taką implementacją zamknięcia (skradziony z Pythona hack)?C++ zamknięcie hack
void function(int value) {
struct closure {
closure(int v = value) : value_(value) {}
private: int value_;
};
closure c;
}
Po dalszych badaniach, to pojawia się w funkcji składowych, zmienne lokalne nie mogą być wykorzystywane jako wartości domyślnych, ale sprzeciw zmienne mogą.
To, co większość innych języków robi za kulisami, gdy przechwytujesz lokalną zmienną z lokalną funkcją. Na przykład dekompiluj kod C#, używając anonimowych delegatów i przechwyconych zmiennych. –
Musisz jawnie przekazać wartość do konstruktora: domyślny argument funkcji nie może być zmienną lokalną. Ta zasada dotyczy wszystkich funkcji, a nie tylko funkcji składowych. –
@ James, dziękuję Nie znałem reguł bardzo dobrze – Anycorn