find Funktion als template [...]
Korrekt, allerdings ist das genau wie C++ Lambas funktionieren. C++ Lambdas sind bloß ganz normale Objekte/anonyme Klassen mit überladenen Klammer-Operator. Dieser Code zum Beispiel arbeitet in C++ mit Lambda und alles zur Compilezeit bekannt... Lambdas arbeiten perfekt mit Templates zusammen und das ist wie alle STL Standardalgorithmen implementiert sind. Man kann ein Lambdaobjekt übergeben und der Code wird speziell dafür kompiliert und ist kann ganz normal geinlined oder sonst was werden. Du darfst hier C++11 Lambdas nicht mit "Delegates", Funktionszeigern und diesem vergleichsweise super-teuren-"
std::function"s verwechseln.
Der zugegebenermaßen theoretische Vorteil den ich meinte ist einfach bloß, dass bei einem Lambda der Compiler relativ einfach ohne Link-Time-Optimierungen nachweisen kann, dass ein Lambda zum Beispiel garantiert nur an zwei Stellen verwendet wird. Zum Beispiel dadurch könnte er sich dazu animiert füllen, dass die Methode geinlined werden könnte. Ähnliche wie globale freie Methoden die mit "
static" ausgezeichnet sind, pro Compile Unit definiert sind und deshalb dem Compiler zum inlinen animieren.