Was ich neulich im Job sah, warf mich förmlich um. Zum ersten Mal sah ich C++ lambda Ausdrücke in einem in die Jahre gekommen Softwarestapel. Es war sogar eine richtig praktische Anwendung, an die die Erfinder dieser neuen Sprachfeatures nicht gedacht hatten:
auto const fDoEvents = [&]()
ProcessMessagesForCurrentProcessMainWindow();
ProcessAfxMessagePump();
};
fDoEvents();
// vollen Refresh auslösen
xy->AddChanges(CTRL_NAV_RESULT);
z->Refresh(CTRL_NAV_CURR, true);
fDoEvents();
Das lambda fasste Statements zusammen, die in einem Spaghetticode immer wieder zu wiederholen sind. Hier war es immer mal wieder Messages zu bearbeiten. In der guten(?), alten Zeit hätten #define macros herhalten müssen.
In unmittelbarer Nähe, ein paar Zeilen unter dem zweiten Aufruf von fDoEvent() befand sich ein Kommentar mit der Diskette:
// TODO: OFL aktualisieren (Dirtyflag / Diskette zurücksetzen)
Nach dem ersten Lachen stellte sich die Frage, wie dieser Kommentar in den Source kam.
Die Datei wurde laut tfs um 2015 geschrieben.
Die zweite Frage, war die, wie lambda Ausdrücke in den neuen C++ Standards funktioneren?
Das lud mich dann ein hierzu etwas zu schreiben.