Légalité de COW std::string Implémentation en C 11
Dans les versions antérieures de C, la copie sur écriture (COW) était une stratégie de mise en œuvre viable pour std::string. Cependant, des inquiétudes ont été soulevées quant à sa validité en C 11. Cet article examine la légalité des implémentations std::string basées sur COW en C 11.
Question : C 11 interdit-il explicitement Implémentations de std::string basées sur COW ?
Réponse : Non, C 11 n'indique pas explicitement que les implémentations basées sur COW sont interdites.
Question :Sinon, comment cette restriction est-elle implicite ?
Réponse :Le Cette restriction découle des nouvelles exigences de C 11 concernant l’invalidation des itérateurs et des références. Selon la section 21.4.1 p6 de la norme, l'invalidation n'est autorisée que dans des cas spécifiques :
Dans une implémentation de chaîne COW, l'appel d'un opérateur non const[] nécessiterait une copie et une invalidation de référence. Toutefois, le paragraphe susmentionné l’interdit. Par conséquent, les implémentations COW std::string ne sont plus autorisées en C 11.
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!