我发现嵌套的 lambda 表达式编译和生成巨大的 .obj 文件非常慢。例如,在我的电脑上,以下代码生成一个大小为 4766 KB 的 obj 文件:
int main()
{
auto f = []
{
auto f = []
{
auto f = []
{
auto f = []
{
auto f = []
{
};
};
};
};
};
}
并且以下代码(添加了一个嵌套级别)将导致C1128错误。
int main()
{
auto f = []
{
auto f = []
{
auto f = []
{
auto f = []
{
auto f = []
{
auto f = []
{
};
};
};
};
};
};
}
此外,它们的编译速度非常慢。对此有什么解释吗?我正在使用 Visual C++ 2013。
更新
这似乎是 Visual C++ 中的一个错误,我已将其报告给 Microsoft:https ://connect.microsoft.com/VisualStudio/feedback/details/813755/nested-lambdas-in-visual-c-2013-are-编译和生成巨大对象文件的速度非常慢。