mercredi 13 mai 2015

c++ cannot be implicitly captured because no default capture mode has been specified

I am trying to follow this example to use a lambda with remove_if. Here is my attempt:

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());

but this fails to compile:

error C3493: 'flagId' cannot be implicitly captured because no default capture mode has been specified

How can I include the outside parameter, flagId, in the lambda expression?

Aucun commentaire:

Enregistrer un commentaire