Y at-il un moyen de capturer par valeur, et rendre la valeur capturée non-const? J'ai un foncteur de bibliothèque que je voudrais capturer & appeler une méthode qui est non-const mais devrait être.C++ 0x capture lambda par valeur toujours const?
Ce qui suit ne compile pas mais foo :: operator() const le 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;
}
Cela fait des choses complètement différentes. Ils ne sont pas interchangeables. Cela ne répond pas à la question du PO. –
Le problème de cette solution est qu'elle ne fonctionne pas pour les variables locales capturées détruites avant l'exécution de lambda (par exemple, lorsque vous démarrez un thread std :: détaché). –