ラムダ式のスコープ
namespace lib { namespace detail { struct A { int a_; }; } using detail::A; } int main() { using namespace lib; //error auto f0 = [](int) { A a; }; while(true) { f0(1); } //error auto f1 = [](int i = 0) { A a; }; while(true) { f1(); } //pass auto f2 = []() { A a; }; while(true) { f2(); } }
上のソースはgcc4.5.0(mingw)なら全部通るのに、visual studio2010だとf0,f1は通らない。
ラムダ式なんて、規格では、ラムダ式の宣言とブロックがあるだけみたいに書いて有ったから、ブロック式はそのまま外側のスコープでusingされたものが使えても良さそう。。。ちゃんと規格が読めないので何とも言えない。
これは、、、vc10.0のバグ・・・???