Je me demande s'il est possible d'écrire une fonction qui renvoie une fonction lambda en C ++ 11. Bien sûr, un problème est de savoir comment déclarer une telle fonction. Chaque lambda a un type, mais ce type n'est pas exprimable en C ++. Je ne pense pas que cela fonctionnerait:
auto retFun() -> decltype ([](int x) -> int)
{
return [](int x) { return x; }
}
Ni ceci:
int(int) retFun();
Je ne suis pas au courant de conversions automatiques de lambdas en, par exemple, des pointeurs vers des fonctions, ou quelque chose du genre. La seule solution est-elle de fabriquer à la main un objet de fonction et de le renvoyer?