Posted by RetroMan | C++, Documentación
Articulo anterior: Funciones lambda en C++ (I)
Sintaxis
La utilidad fundamental de la expresión lambda es la generación directa del objeto función en el lugar mismo de su uso, sin necesidad de definir su clase en otra sección apartada del código.
La sintaxis de una funcion Lambda lleva la siguiente forma:
[captura] (parametros) mutable noexcept -> tipo de retorno { expresión }
Sección Nombre Propiedades
[]
Introductor o cláusula de captura.
Con o sin lista de captura interior (ver más adelante).
()
Declarador o lista de parámetros.
Puede omitirse en ausencia de parámetros siempre que no se utilicen los declaradores mutable y noexcept.
mutable
Las variables capturadas en el introductor puedan ser modificadas en el cuerpo de la función. (opcional)
noexcept
Indica que la función no emite excepciones. (Opcional)
-> tipo de retorno
Tipo de retorno.
De ser omitido, el tipo es inferido a partir de las cláusulas de retorno de la función (o bien se toma como void en ausencia de las mismas).
{}
Cuerpo de la función lambda.
Aca va la expresión que es la que se evalua y ejecuta
Una expresión lambda puede  capturar variables en su ámbito mediante su introductor o cláusula de captura. Existe los siguientes tipos de capturas:
Modo Propiedades
[]
Modo por defecto. Ninguna variable externa es capturada.
[=]

Todas las variables externas utilizadas por la expresión lambda son capturadas por valor.
[&]
Todas las variables externas utilizadas por la expresión lambda son capturadas por referencia.
[capture_list]
Sólo la lista de nombres capture_list es capturada (por referencia va precedido de &).
[=,capture_list]
Todas las variables no incluidas en capture_list son capturadas por valor.
[&,capture_list]
Todas las variables no incluidas en capture_list son capturadas por referencia.

Todo lo comentado sobre las funciones Lambda hace referencia a tal y como fueron introducidas en el lenguaje al aprobarse el estándar C++11.

Y pese a la potencia de las funciones Lambda, el no poder hacer una plantillas Lambda también supone un inconveniente en algunos contextos. Por lo que el estándar C++14 amplía las funciones Lambda.

Responses are currently closed, but you can trackback from your own site.