Dans le domaine de la programmation C, une question intrigante se pose : les références rvalue aux types de classe const servent-elles à quelque chose ? Bien qu'on puisse initialement supposer qu'ils sont redondants, un examen plus approfondi révèle qu'ils ont une utilité occasionnelle.
Le projet de norme de langage C 0x fournit un exemple de leur application. Deux modèles de fonctions, ref et cref, sont définis comme suit :
template <class T> void ref(const T&&) = delete; template <class T> void cref(const T&&) = delete;
Ces surcharges ont un objectif essentiel : empêcher les autres fonctions ref(T&) et cref(const T&) d'être invoquées avec des rvalues. Cela serait possible si les références rvalue à const n'étaient pas définies.
Mise à jour :
Après un examen plus approfondi de la norme officielle C (N3290), les mêmes modèles de fonction apparaissent dans la section 20.8 [function.objects]/p2. De plus, la version post-C 11 la plus récente (N3485) inclut également ces modèles au même endroit.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!