Gibt es eine Möglichkeit, nach Wert zu erfassen und den erfassten Wert nicht konstant zu machen? Ich habe einen Bibliotheksfunktor, den ich gerne erfassen würde & rufen Sie eine Methode auf, die nicht const ist, aber sollte.C++ 0x Lambda-Capture von Wert immer const?
Das folgende kompiliert nicht, aber macht foo :: operator() const behebt es.
struct foo
{
bool operator() (const bool & a)
{
return a;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
foo afoo;
auto bar = [=]() -> bool
{
afoo(true);
};
return 0;
}
Das macht ganz andere Dinge. Sie sind nicht austauschbar. Dies entspricht nicht der Frage des OP. –
Das Problem dieser Lösung besteht darin, dass sie nicht für erfasste lokale Variablen funktioniert, die vor der Ausführung des Lambda zerstört wurden (zum Beispiel wenn Sie einen gelösten std :: thread starten). –