You need to capture a variable , either by value (using the syntax [=] )
bool repeated = std::any_of(agents.begin(), agents.end(), [=](P_EndPoint i)->bool {return requestPacket.identity().id()==i.id();});
or by reference (using the syntax [&] )
bool repeated = std::any_of(agents.begin(), agents.end(), [&](P_EndPoint i)->bool {return requestPacket.identity().id()==i.id();});
Please note that, as @aschepler points out, global variables with static storage duration are not fixed , only function level variables:
#include <iostream> auto const global = 0; int main() { auto const local = 0; auto lam1 = [](){ return global; }; // global is always seen auto lam2 = [&](){ return local; }; // need to capture local std::cout << lam1() << "\n"; std::cout << lam2() << "\n"; }
TemplateRex
source share