Maison > développement back-end > C++ > Une implémentation de copie sur écriture std::string est-elle légale en C 11 ?

Une implémentation de copie sur écriture std::string est-elle légale en C 11 ?

Barbara Streisand
Libérer: 2024-12-20 00:43:09
original
985 Les gens l'ont consulté

Is a Copy-on-Write std::string Implementation Legal in C  11?

Légalité de la copie sur écriture (COW) std::string Implémentation en C 11

Bien que l'on ait pu croire que COW n'est pas une technique réalisable pour implémenter un std::string conforme en C 11, des discussions récentes ont soulevé des incertitudes. Ce qui suit explore la validité de cette hypothèse basée sur la nouvelle norme.

Interdiction des implémentations std::string basées sur COW en C 11

C 11 interdit explicitement COW -implémentations basées sur std::string. Cette limitation est indiquée dans la section 21.4.1 p6 de la norme, qui autorise l'invalidation des itérateurs/références uniquement dans des circonstances spécifiques :

  • En tant qu'argument d'une fonction de bibliothèque standard qui accepte une référence à un non -const basic_string.
  • Appel de fonctions non membres const, à l'exclusion de l'opérateur[], at, front, back, start, rbegin, end et rend.

Dans une chaîne COW, invoquer un opérateur non const[] nécessite de créer une copie (invalidation des références), ce qui est interdit par le paragraphe susmentionné. Par conséquent, les cordes COW sont interdites en C 11 en raison de cette contrainte.

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal