Dla następującego kodu:lambdas wymagają przechwycenia "tego", aby wywołać funkcję statycznego członka?
struct B
{
void g()
{
[]() { B::f(); }();
}
static void f();
};
g ++ 4.6 daje błąd:
test.cpp: In lambda function:
test.cpp:44:21: error: 'this' was not captured for this lambda function
(ciekawe, g ++ 4.5 kompiluje kod grzywny).
Czy jest to błąd w g ++ 4.6, czy też naprawdę konieczne jest uchwycenie "tego" parametru, aby móc wywołać funkcję statycznego członka? Nie rozumiem, dlaczego tak powinno być, zakwalifikowałem nawet połączenie pod numerem B::
.
To byłby błąd. –
Nadal błąd w GCC 4.7.2. Dodanie "tego" jako przechwytywania nadal działa. –
Naprawiono w GCC 4.8. – akim