Perché le seguenti espressioni C++ valide sono le seguenti? Questi non sono lambdaLe espressioni bizzarre del C++ vengono compilate correttamente.
[]{}();
{}[]{};
Qualcuno può spiegarmeli?
Perché le seguenti espressioni C++ valide sono le seguenti? Questi non sono lambdaLe espressioni bizzarre del C++ vengono compilate correttamente.
[]{}();
{}[]{};
Qualcuno può spiegarmeli?
Il primo è un lambda senza elenco parametri e una chiamata successiva. []{}
è equivalente [](){}
così l'intera riga equivale a
[](){}();
La seconda è una coppia di bretelle, che introducono e quindi chiudere immediatamente un ambito, seguita da una definizione lambda inutilizzato senza lista di parametri :
{
// empty scope
}
[]{}; // lambda
È possibile fare riferimento a http://en.cppreference.com/w/cpp/language/lambda per le variazioni sul sintassi definizione lambda.
Questa è una chiamata lambda
[]{}();
è equivalente a
[](){}();
Il secondo è un ambito vuoto, seguito da un lambda (inutilizzato).
I paramenti sono facoltativi per lambda senza parametro.
Sì, questi sono lambda. – ulidtko