У мене було уявлення, що тип лямбда - покажчик функції. Коли я виконував наступний тест, я виявив, що це неправильно ( демонстрація ).
#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 !
}
У верхньому коді відсутня якась точка? Якщо ні, то що таке typeof
лямбда-вираз, коли виводиться з auto
ключовим словом?