Maison  >  Article  >  développement back-end  >  Pourquoi n'y a-t-il pas de spécialisation std::shared_ptr en C ?

Pourquoi n'y a-t-il pas de spécialisation std::shared_ptr en C ?

DDD
DDDoriginal
2024-11-10 06:48:03963parcourir

Why Isn't There a std::shared_ptr Specialization in C  ?

std::shared_ptr Spécialisation

La bibliothèque standard C contient une spécialisation de std::unique_ptr pour les tableaux, qui appelle correctement delete[] depuis son destructeur. Cependant, une spécialisation similaire est notamment absente pour std::shared_ptr. Ce comportement oblige les utilisateurs à fournir manuellement un outil de suppression qui appelle explicitement delete[].

Cette omission est-elle un oubli ou intentionnelle ?

Raison de l'absence

Le groupe de travail sur la bibliothèque C (LWG) a envisagé la possibilité d'un std::shared_ptr spécialisation, mais la controverse entourant les fonctionnalités supplémentaires a empêché son inclusion.

Plus précisément, les opérations arithmétiques sur std::shared_ptr ont été proposées mais se sont heurtées à une opposition. En fin de compte, l'absence de proposition officielle et de priorisation a conduit à l'exclusion de la fonctionnalité de la norme.

Développements récents

De manière informelle, le sujet a de nouveau gagné du terrain au sein du LWG, et un prototype a été développé. Bien que cette fonctionnalité ait le potentiel de devenir un outil précieux, son inclusion dans la norme reste incertaine.

Statut actuel

À partir de C 11, une norme : shared_ptr la spécialisation n’a pas été standardisée. Cependant, il existe un projet de proposition TS en cours (N4077) qui introduit la prise en charge des baies pour std::shared_ptr.

Mise à jour (2017)

La norme C 17 inclut la prise en charge pour les tableaux dans std::shared_ptr (cas 3 de shared_ptr::shared_ptr()).

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:
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