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 typeof
Lambda-Ausdruck, wenn er mit dem auto
Schlüsselwort abgeleitet wird ?