3

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

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

并稍作调整...

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

VS2010/VS2012 都因此代码导致编译器崩溃。

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

4

1 回答 1

4

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

[...] 出于名称查找的目的,[...]复合语句在lambda-expression的上下文中被考虑。

于 2012-12-12T16:45:06.757 回答