【发布时间】:2018-09-23 00:27:34
【问题描述】:
下面给出VS2010和VS2012中的错误'one': identifier not found
int main()
{
struct one {};
[](){ return one(); }();
}
稍作调整...
int main()
{
struct one {};
[](){ one uno; return uno; }();
}
VS2010/VS2012 都因这段代码导致编译器崩溃。
那么,问题是(忽略编译器崩溃),lambas 是否应该能够看到本地类?
【问题讨论】:
-
第二个不需要 lambda 的显式返回类型吗?并不是说这是编译器崩溃的借口。
-
@Dave:从技术上讲,如果函数体包含的不仅仅是一个 return 语句,您需要一个显式的返回类型。这对我来说似乎很奇怪,但这是语言规范所说的。
-
@MikeSeymour DR975 建议删除该限制,但细节有点棘手。见stackoverflow.com/questions/9138939/return-type-deduction
标签: c++ visual-c++ c++11 lambda visual-studio-2012