[C++] Lambda capture de pointeur

Lambda capture de pointeur [C++] - C++ - Programmation

Marsh Posté le 19-10-2017 à 16:17:05    

Salut,

 
Code :
  1. char* c1 = "1";
  2. char* c2 = "2";
  3. char* c3 = "3";
  4. char* c4 = "4";
  5. std::vector<char*> vec{ c1, c2 ,c3, c4 };
  6. std::for_each(vec.begin(), vec.end(), [](auto& v) { v = "P"; });
 

Dans cet exemple, j'aurais aimer savoir s'il y avait une difference entre la capture par copie et par reference pour les pointeurs.

 

C'est a dire si la capture par copie créait une variable interne en copiant le pointeur ?
(Perso, j'ai essayer de regarder au niveau assembleur mais j'ai rien trouver au niveau difference en taille)

 

Merci, par avance :o

 


Message édité par b9ron le 19-10-2017 à 16:18:09
Reply

Marsh Posté le 19-10-2017 à 16:17:05   

Reply

Marsh Posté le 19-10-2017 à 17:07:24    

De quoi tu parles ? Tu n'as pas de capture ici, juste une fonction avec un argument ...


---------------
last.fm
Reply

Marsh Posté le 19-10-2017 à 17:53:21    

[:vizera]
 
J'ai toujours penser que les [] avait une incidence sur les arguments de la fonction ...

Reply

Marsh Posté le 19-10-2017 à 18:16:39    

[] signifie que tu ne captures rien.
[=] signifie que tu captures des copies de ce que tu références dans ta lambda
[&] signifie que tu captures des références vers ce que tu références dans ta lambda.
 
Le point est que ta lambda ne référence pas de variable locale, donc il n'y a rien à mettre dans sa clôture lexicale.


---------------
last.fm
Reply

Marsh Posté le 19-10-2017 à 19:10:50    

Merci  :love:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed