int i = 9;
struct_variable.f = [i](T struct_variable&) {
do_something_with_capture_variable(i);
...
struct_variable.f = another_compatible_std_function;
//do something else, but never use captured variable after here
...
};
struct_variable.f(struct_variable);
Die Lambda-Funktion als Mitglied gespeichert ruft struct_variable.f
(was getippt auch std::function
ist), und in der Callback, struct_variable.f
von another_compatible_std_function
nach dem Fertig mit erfassten Variable ersetzt wird.Assign neuer Wert std :: Funktion während
Ist diese Praxis garantiert sicher?
Ich möchte ja sagen, solange Sie vorsichtig sind, da die Situation analog zum "Löschen" eines Objekts während der Ausführung einer seiner Mitgliedsfunktionen ist. Aber das ist aus dem Standard schwer zu beweisen. – aschepler