Maison > développement back-end > C++ > 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
Libérer: 2024-11-10 06:48:03
original
1046 Les gens l'ont consulté

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 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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal