J'ai eu l'impression que, le type d'une expression lambda est un pointeur de fonction. Lorsque j'ai effectué les test suivant, je l'ai trouvé mauvais (démo).
#define LAMBDA [] (int i) -> long { return 0; }
int main ()
{
long (*pFptr)(int) = LAMBDA; // ok
auto pAuto = LAMBDA; // ok
assert(typeid(pFptr) == typeid(pAuto)); // assertion fails !
}
Est au-dessus de code manquant ? Si non, alors, qu'est-ce que l' typeof
d'une expression lambda quand déduit auto
mot-clé ?