il me semble que l'ordre de libération est inverse
C'est le cas, j'ai utilisé rbegin et rend, qui itère sur le std::vector depuis la fin vers le début.
En go, j'imagine que ça :
En Go defer exécute du code à la fin de la fonction, pas à la fin du scope, donc ton defer à l'intérieur du if ne sera pas exécuté au bon moment.
Donc ma version C++ permet une gestion plus fine. Le fait de déclarer une seconde frame dans le if (qui repose sur le variable shadowing) va justement te permettre d'avoir le comportement souhaité.
[^] # Re: Le diable est l'ennemi du détail (ou un truc comme ça)
Posté par David Delassus (site web personnel) . En réponse au journal Une 20-aine de lignes de code pour le defer de Go en C++. Évalué à 3.
C'est le cas, j'ai utilisé
rbeginetrend, qui itère sur lestd::vectordepuis la fin vers le début.En Go
deferexécute du code à la fin de la fonction, pas à la fin du scope, donc tondeferà l'intérieur duifne sera pas exécuté au bon moment.Donc ma version C++ permet une gestion plus fine. Le fait de déclarer une seconde frame dans le if (qui repose sur le variable shadowing) va justement te permettre d'avoir le comportement souhaité.
https://link-society.com - https://kubirds.com - https://github.com/link-society/flowg