Maison >développement back-end >C++ >Une implémentation de copie sur écriture std::string est-elle légale en 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 :
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!