So che questa domanda è già stato risposto, ma quando ero alla ricerca di una risposta a questa domanda, stavo cercando qualcosa di diverso rispetto alle risposte qui, e penso che questo potrebbe essere stato ciò a cui alludeva l'OP, quindi spero questo aiuterà qualcun altro.
Diciamo che avete una funzione:
void print(int n)
{
printf("%i ", n);
}
per passare un lambda a questa funzione, effettuare le seguenti operazioni:
print([]{
return 3;
}());
Questa passerà 3 alla funzione, ovviamente. Un esempio più utile, in particolare legati alla domanda del PO, è un lambda che prende un intero come parametro e restituisce un int alla funzione fine:
int x = 3;
auto lambdaFunction = [](int input) {
return (input + 1);
};
print(lambdaFunction(x));
Ciò presuppone non passa per valore o per riferimento al lambda, che puoi fare direttamente:
// Pass by value
print([=]{
return (x + 1);
}());
// Pass by reference
print([&]{
return (x + 1);
}());
fonte
2017-06-22 03:57:39
Perché avresti bisogno del lambda come riferimento? Intendi 'const &'? –