非静的メンバー関数で c++11 ラムダを使用し、同じクラスの静的メンバー関数を呼び出したい:
class A {
static void a() {}
public:
void x() {
[] () { A::a(); }();
}
};
しかし、gcc4.6 と gcc4.7 の両方でエラーが発生しました: error: 'this' was not capture for this lambda function
「a」は静的メンバー関数であるため、ラムダに「this」が必要なのはなぜですか。
また、「x」が静的であるか、「a」が他のクラスの静的メンバー関数である場合、「this」は必要ないのはなぜですか?