I\'m playing with C++11 for fun. I\'m wondering why this happens:
//...
std::vector agents;
P_CommunicationProtocol requestPacket;
//...
bool r
You need to capture the 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();});
Note that as @aschepler points out, global variables with static storage duration are not captured, 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";
}