lambdas是否应该能够看到本地类

Are lambdas supposed to be able to see local classes?

本文关键字:是否 lambdas      更新时间:2023-10-16

下面给出了VS2010和VS2012中的错误'one': identifier not found

int main()
{
    struct one {};
    [](){ return one(); }();
}

稍作调整...

int main()
{
    struct one {};
    [](){ one uno; return uno; }();
}
VS2010

/VS2012 都有编译器在此代码中崩溃。

所以,问题是(忽略编译器崩溃),lambas 应该能够看到本地类吗?

是的,VS 不正确。 从 5.1.2p7:

[...]

为了进行名称查找,[...]复合语句是在lambda表达式的上下文中考虑的。