【发布时间】:2019-03-05 06:12:20
【问题描述】:
// Example program
#include <iostream>
#include <string>
void Do()
{
std::cout << "Hello";
}
int Call(int(*f)())
{
return f();
}
int main()
{
// WHY DOES THE FOLLOWING COMPILE???!!!
// NOTE THE MISSING RETURN STATEMENT
Call([]()->int{ Do(); });
}
似乎对于某些编译器,上面的代码编译得很好,而且它也可以工作。但显然,lambda 缺少 return 语句。为什么这行得通?是编译器的问题吗?在这种情况下 lambda 会返回什么?
【问题讨论】: