如何解决Visual Studio 2019嵌套Lambda编译错误
我发现Visual Studio 2019(工具集v142)中似乎是编译器错误。这是为您自己测试的最少代码:
#include <functional>
#include <vector>
#include <iostream>
int main()
{
auto someLamb = [&]()
{
enum EnumA { eFoo = 0,eBar = 1,eCount = 2 };
enum EnumB { eUndefined = -1,eFirst = 0 };
std::vector<EnumB> edgesChanges;
edgesChanges.push_back(EnumB::eUndefined);
edgesChanges.push_back(EnumB::eUndefined);
auto innerLamb = [&]()
{
int a = edgesChanges[EnumA::eFoo];
int b = EnumB::eFirst;
int c = edgesChanges[EnumA::eBar];
int d = EnumB::eFirst;
return a == b || c == d;
};
std::cout << "Hello World!\n" << innerLamb();
};
someLamb();
}
我在输出中得到这个:
error C2440: '<function-style-cast>': cannot convert from 'initializer list' to 'main::
<lambda_82d455ec4380498d1fafa4212566d992>::()::<lambda_02e80f24e36a566682364f879a75c75d>'
message : No constructor could take the source type,or constructor overload resolution was ambiguous
请注意,lambda是嵌套的。如果删除了外部lambda,则可以正常编译。 我在做错什么吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。