lambda需要捕获“this”来调用静态成员函数?

对于下面的代码:

struct B { void g() { []() { B::f(); }(); } static void f(); }; 

g ++ 4.6给出了错误:

test.cpp:在lambda函数中:
test.cpp:44:21:error:'this'没有被捕获到这个lambda函数

(有趣的是,g ++ 4.5编译好的代码)。

这是g ++ 4.6中的一个bug,还是真的有必要捕获“this”参数来调用静态成员函数? 我不明白为什么它应该是,我甚至有资格与B::呼叫。

我同意,它应该编译得很好。 对于修复(如果你不知道),只需添加引用捕获,它会在gcc 4.6上编译好

 struct B { void g() { [&]() { B::f(); }(); } static void f() { std::cout << "Hello World" << std::endl; }; };