¿Hay alguna forma de capturar por valor y hacer que el valor capturado no const? Tengo un functor de biblioteca que me gustaría capturar & llamar a un método que no es const pero debería ser.C++ 0x captura lambda por valor siempre const?
Lo siguiente no se compila pero haciendo foo :: operator() const lo corrige.
struct foo
{
bool operator() (const bool & a)
{
return a;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
foo afoo;
auto bar = [=]() -> bool
{
afoo(true);
};
return 0;
}
Esto hace cosas completamente diferentes. No son intercambiables. Esto no responde a la pregunta del OP. –
El problema de esta solución es que no funciona para las variables locales capturadas destruidas antes de que se ejecute el lambda (por ejemplo, cuando se inicia un std :: thread separado). –