以下内容给出了VS2010和VS2012中的错误'one': identifier not found
int main()
{
struct one {};
[](){ return one(); }();
}
略微调整......
int main()
{
struct one {};
[](){ one uno; return uno; }();
}
VS2010 / VS2012都有来自此代码的编译器崩溃。
所以,问题是(忽略编译器崩溃),lambas应该能够看到本地类吗?
答案 0 :(得分:4)
是的,VS不正确。从5.1.2p7开始:
[...]出于名称查找的目的,复合语句在 lambda-expression 的上下文中被考虑。