Sé que esta pregunta ya ha sido contestada, pero cuando yo estaba buscando la respuesta a esta pregunta, estaba buscando algo un poco diferente a las respuestas aquí, y creo que esto podría haber sido a lo que el OP estaba aludiendo, así que aquí está la esperanza esto ayudará a alguien más.
Digamos que tiene una función:
void print(int n)
{
printf("%i ", n);
}
el fin de pasar un lambda a esta función, haga lo siguiente:
print([]{
return 3;
}());
Esto pasará a la función 3, obviamente. Un ejemplo más útil, específicamente relacionada con la pregunta del OP, es un lambda que toma un número entero como un parámetro y devuelve un int a la función final:
int x = 3;
auto lambdaFunction = [](int input) {
return (input + 1);
};
print(lambdaFunction(x));
Esto es suponiendo que no pasa por valor o por referencia a la lambda, que puede hacer directamente:
// Pass by value
print([=]{
return (x + 1);
}());
// Pass by reference
print([&]{
return (x + 1);
}());
¿Por qué necesitaría la lambda por referencia? ¿Te refieres a 'const &'? –