Какой тип лямбда-выражения выводится с помощью «auto» в C ++ 11?
У меня было ощущение, что тип лямбда - это указатель на функцию. Когда я выполнил следующий тест, я обнаружил, что это неправильно (демонстрация).
#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
ключевое слово?