Visual Studio 2013.这一行:
void main()
{
auto f = [](std::string const& a){ return [a](std::string const& b) { return a == b; }; };
}
导致编译错误:
error C2440: 'return' : cannot convert from 'main::<lambda_2de76b925b1cf5057c3b0fda7d008552>::()::<lambda_c01227249c973bad6dd44317ca85b677>' to 'bool (__cdecl *)(const std::string &)'
这是一个错误还是我的愚蠢行为?
编辑: 可能对某人有用:case on Microsoft site。 解决方法是外部lambda的显式返回类型定义:
auto f = [](std::string const& a)->std::function<bool(std::string const&)>{ return [a](std::string const& b) { return a == b; }; };