【发布时间】:2026-01-23 13:55:01
【问题描述】:
我有一种感觉,lambda 的类型是一个函数指针。当我执行以下测试时,我发现它是错误的(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 !
}
上面的代码是否缺少任何一点?如果不是,那么用auto 关键字推导出来的typeof lambda 表达式是什么?
【问题讨论】:
-
“lambda 的类型是一个函数指针”——这将是低效的并且错过了 lambdas 的全部要点。
标签: c++ lambda c++11 typeof auto