ventajas tutorial son sintaxis que operador funciones expresiones español aprender c++ lambda c++11

c++ - tutorial - ¿Las lambdas requieren capturar ''esto'' para llamar a la función de miembro estático?



operador lambda python (1)

Estoy de acuerdo, debería compilarse bien. Para la solución (si aún no lo sabía), simplemente agregue la captura de referencia y compilará bien en gcc 4.6

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

Para el siguiente código:

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

g ++ 4.6 da el error:

test.cpp: En la función lambda:
test.cpp: 44: 21: error: ''esto'' no fue capturado para esta función lambda

(Curiosamente, g ++ 4.5 compila el código bien).

¿Es esto un error en g ++ 4.6, o es realmente necesario capturar el parámetro ''this'' para poder llamar a una función miembro estática? No veo por qué debería ser así, incluso califiqué la llamada con B:: .