Erreur de compilation C3493: ‘func’ ne peut pas être implicitement capturé car aucun mode de capture par défaut n’a été spécifié

Pouvez-vous m’aider à résoudre cette erreur de compilation?

template static void ComputeGenericDropCount(function func) { T::ForEach([](T *what) { Npc *npc = Npc::Find(what->sourceId); if(npc) func(npc, what->itemCount); // <<<<<<< ERROR HERE // Error 1 error C3493: 'func' cannot be implicitly captured because no default capture mode has been specified }); } static void PreComputeNStar() { // ... ComputeGenericDropCount([](Npc *npc, int i) { npc->nSkinned += i; }); ComputeGenericDropCount([](Npc *npc, int i) { npc->nGathered += i; }); ComputeGenericDropCount([](Npc *npc, int i) { npc->nMined += i; }); } 

Je ne comprends pas pourquoi ça me donne l’erreur et je ne sais pas comment le réparer. ComputeGenericDropCount(auto func) ne fonctionne pas non plus.

Vous devez spécifier comment capturer le func dans le lambda.

[] ne capture rien

[&] capture par référence

[=] capture par valeur (copie)

 T::ForEach([&](T *what) { 

Je vous recommande également d’envoyer func par référence const.

 static void ComputeGenericDropCount(const function& func)