No hay ninguna ventaja de rendimiento per se, sino la necesidad de lambda se produjo como consecuencia de la amplia adopción de la STL y sus ideas de diseño.
Específicamente, los algoritmos STL hacen uso frecuente de funtores. Sin lambda, estos funtores deben declararse previamente para ser utilizados. Lambdas hace posible tener funcionadores "anónimos" en el lugar.
Esto es importante porque hay muchas situaciones en las que necesita usar un funtor solo una vez, y no desea darle un nombre por dos razones: no desea contaminar el espacio de nombres, y en esos casos específicos, el nombre que das es vago o extremadamente largo.
Yo, por ejemplo, uso mucho STL, pero sin C++ 0x utilizo mucho más para los bucles() que el algoritmo for_each() y sus primos. Eso es porque si tuviera que usar for_each() en su lugar, necesitaría obtener el código del circuito y declarar un functor para él. Además, no se podría acceder a todas las variables locales antes del bucle, así que necesitaría escribir código adicional para pasarlas como parámetros al constructor del functor u otra cosa equivalente. Como consecuencia, tiendo a no usar for_each() a menos que haya una gran motivación, de lo contrario el código sería más largo y más difícil de leer.
Eso es malo, porque es bien sabido que usar for_each() y algoritmos similares da mucho más espacio al compilador & la biblioteca para optimizaciones, incluido el paralelismo automático. Entonces, indirectamente, lambda favorecerá un código más eficiente.
voy a tomar "tercero excluido" por $ 500 Alex. –
Entonces, las dos únicas razones que puede pensar para una función de idioma son "va más rápido" o "es como una raya rápida en un cohete de arroz".¿Cuál es el término latino elegante para "prueba por falta de imaginación" de nuevo? –
Esto ha sido esclarecedor. Gracias a todos por las respuestas. – LoudNPossiblyWrong