l'aide hors de la portée des variables en C++11 les expressions lambda
Je suis en train de jouer avec C++11 pour le plaisir. Je me demandais pourquoi ce qui se passe:
//...
std::vector<P_EndPoint> agents;
P_CommunicationProtocol requestPacket;
//...
bool repeated = std::any_of(agents.begin(), agents.end(),
[](P_EndPoint i)->bool
{return requestPacket.identity().id()==i.id();});
Compilation se termine avec cette erreur:
error: 'requestPacket' has not been declared
Qui est déclaré plus tôt dans le code. J'ai essayé ::requestPacke
et il n'a pas travaillé trop.
Comment puis-je utiliser une portée externe variable à l'intérieur d'une fonction lambda?
Ils sont à l'intérieur d'une méthode d'une classe. Ce n'est pas un bon titre, je devrais peut-être changer de
out of current scope
...OriginalL'auteur sorush-r | 2013-06-04
Vous devez vous connecter pour publier un commentaire.
Vous devez la capture de la variable, soit par la valeur (à l'aide de la
[=]
syntaxe)ou par référence (à l'aide de la
[&]
syntaxe)Noter que, comme @aschepler points, les variables globales avec statique de la durée de stockage ne sont pas capturés, seule la fonction de variables de niveau:
Tnx, mise à jour de la réponse.
OriginalL'auteur TemplateRex