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::
.