2012-12-12 48 views
3

下面給出了錯誤'one': identifier not found在VS2010和VS2012拉姆斯應該能夠看到當地的班級嗎?

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

而且有輕微的調整...

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

VS2010/VS2012都有一個編譯器崩潰從這個代碼。

所以,問題是(忽略編譯器崩潰),是否應該能夠看到本地類?

+1

是的,VS壞了。 –

+3

第二個不需要lambda的顯式返回類型嗎?並不是說這是編譯器崩潰的藉口。 –

+0

@SteveJessop _need_?我不知道lambdas的顯式返回規則 - 但只有1個返回,它的類型是衆所周知的。你爲什麼需要它? – David

回答

4

是的,VS不正確。從5.1.2p7:

[...]的名稱查找的目的,[...]的複合語句拉姆達表達的背景中考慮。