:lambdasは、静的メンバー関数を呼び出すために 'this'をキャプチャする必要がありますか?次のコードについて
struct B
{
void g()
{
[]() { B::f(); }();
}
static void f();
};
グラム++ 4.6は、エラーを与える:
test.cpp: In lambda function:
test.cpp:44:21: error: 'this' was not captured for this lambda function
(興味深いことに、G ++ 4.5は、コード罰金をコンパイル)。
これはg ++ 4.6のバグですか、または静的メンバー関数を呼び出すには 'this'パラメータをキャプチャすることが本当に必要ですか?私はなぜそれがすべきかわからない、私はB::
で通話を修飾した。
これはバグです。 –
GCC 4.7.2のバグです。 'this'をキャプチャとして追加しても動作します。 –
GCC 4.8で修正されました。 – akim