Ich hatte die Auffassung, dass der Typ eines Lambda ein Funktionszeiger ist. Als ich den folgenden Test durchführte, stellte ich fest, dass er falsch war ( Demo ).
#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 !
}
Fehlt dem obigen Code ein Punkt? Wenn nicht, was ist der typeofLambda-Ausdruck, wenn er mit dem autoSchlüsselwort abgeleitet wird ?