Référence constante sur référence
Une petite note sur les références et le qualificatif const en commençant par un exemple :).
using reference = int&;
int i = 0;
reference const r = i;
r = 3;
Contrairement à ce que laisse croire le code, il est possible de modifier la valeur de r.
En fait, ajouter const sur une référence ne fait rien car cela ne s’applique pas sur le référé qui reste un int&.
Si on déroule complètement le type de r, on obtient int & const r: une référence constante sur un entier.
Comme une référence est par nature immutable (le référé ne peut pas changer), le const est superflux.
Le type de r est donc bien une référence sur un entier non-constant.
(On notera toutefois que la syntaxe int & const est invalide puisque const ne peut s’appliquer directement sur une référence.)