Ah, donc en C++ on peut avoir ça:
A& B::getA() { <some code> }
const A& B::getA() const { <the same exact code> }
et ça choc personne... Bien bien bien...
Post
Ah, donc en C++ on peut avoir ça:
A& B::getA() { <some code> }
const A& B::getA() const { <the same exact code> }
et ça choc personne... Bien bien bien...
@Ambraven c’est hyper chiant, le deducing this arrive qu’en cpp23 mais permettrait d’écrire une seule version pour tout gérer (const, non const, même rvalue ref)
https://www.sandordargo.com/blog/2022/02/16/deducing-this-cpp23
Le tout avec une syntaxe pas si simple à lire / comprendre du premier coup d’œil, parce que C++ 🤡
(J’ai vu une 1000eme occasion de dunk sur mon langage préféré, mon devoir est de dire que c’est de la merde)
moi, nageant dans le turfu avec C++11: "C++ combien ? Mais enfin, vous délirez ! c'est de la science-fiction !"
Blague à part je vois en comment mon exemple plus haut ne peut pas être remplacé par
A& B::getA() const { <same code but only once> }
À la limite il aurait écrit :
A& B::getA() const { <the CODE> }
const A& B::getAConst() const { return getA(); }
Ça aurait fait sens... Au moins c'est explicite. Peut être je rate un truc, je sais pas. Mais quand on commence à dupliquer du code comme ça, surtout avec deux fonctions avec le même nom et les mêmes arguments, j'aime pas.
Mais bon ça aurait pu être pire, le code aurait pu être différent... Vous savez, pour qu'il y ait pas du tout de confusion sur quel version de la fonction est exécuté...
A space for Bonfire maintainers and contributors to communicate