Próbuję podążać za this example, aby użyć lambda z remove_if
. Oto moja próba:Błąd: zmienna "nie może zostać niejawnie przechwycona, ponieważ nie określono domyślnego trybu przechwytywania"
int flagId = _ChildToRemove->getId();
auto new_end = std::remove_if(m_FinalFlagsVec.begin(), m_FinalFlagsVec.end(),
[](Flag& device) {
return device.getId() == flagId;
});
m_FinalFlagsVec.erase(new_end, m_FinalFlagsVec.end());
ale ten nie trafia do kompilacji:
error C3493: 'flagId' cannot be implicitly captured because no default capture mode has been specified
Jak mogę to parametr zewnątrz, flagId
w wyrażeniu lambda?
Domyślne tryby przechwytywania to '[=]' (według wartości) i '[&]' (przez odniesienie). '[]' oznacza brak przechwytywania. – MSalters