J'avais une perception que, le type d'un lambda est un pointeur de fonction. Lorsque j'ai effectué le test suivant, j'ai trouvé que c'était faux ( 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 !
}
Le code ci-dessus manque-t-il un point? Sinon, qu'est-ce que l' typeof
expression a lambda lorsqu'elle est déduite avec un auto
mot-clé?