Kann/funktioniert der Compiler inline Lambda-Funktionen zur Steigerung der Effizienz, wie es mit einfachen Standardfunktionen möglich ist?Sind lambdas wie in C++ inlined?
z.B.
std::vector<double> vd;
std::for_each(vd.begin(), vd.end(), [](const double d) {return d*d;});
Oder gibt es einen Effizienzverlust aufgrund fehlender Optimierung?
Eine zweite Frage: wo kann ich überprüfen, ob der Compiler, den ich verwende, Aufrufe von Inline-Funktionen optimiert hat, die an einen Algorithmus gesendet werden? Was ich meine ist, wenn eine Funktion - kein Funktionsobjekt - an einen Algorithmus gesendet wird, erhält der letzte einen Zeiger auf die Funktion, und einige Compiler optimieren Zeiger auf Inline-Funktionen und andere nicht.
Einige sind optimiert, manche nicht, wie jeder Funktionsaufruf. Wenn Sie an einem bestimmten Aufruf interessiert sind, müssen Sie überprüfen, was Ihr bestimmter Compiler mit diesem bestimmten Aufruf macht. –
Sie verwirren Konzepte hier. Alle Lambdas sind Inline. Nicht alle Anrufe an sie sind notwendigerweise inline. –
Ich glaube nicht, dass ein Lambda inline sein kann, wenn es an eine externe Funktion übergeben wird. – nobar