不清楚嵌套的lambda编译错误

时间:2013-11-15 17:11:34

标签: c++ c++11 lambda

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; }; };

0 个答案:

没有答案