Maison >développement back-end >C++ >Pourquoi n'y a-t-il pas de `std::shared_ptr` dans la bibliothèque standard C ?

Pourquoi n'y a-t-il pas de `std::shared_ptr` dans la bibliothèque standard C ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-10 04:07:53520parcourir

Why isn't there a `std::shared_ptr` in the C   standard library?

Une plongée plus approfondie dans l'absence de std::shared_ptr

Dans la bibliothèque standard C, il existe un version spécialisée de std::unique_ptr pour les tableaux, std::unique_ptr, qui appelle correctement delete[] dans son destructeur. Cependant, une telle spécialisation fait défaut pour std::shared_ptr, ce qui nécessite l'utilisation de suppresseurs personnalisés comme celui présenté dans la question.

Justification du manque de spécialisation

L'absence de std::shared_ptr découle d'une combinaison de facteurs :

  • Discussion du LWG : Le groupe de travail sur les bibliothèques (LWG) a examiné l'idée mais l'a finalement rejetée en raison de la controverse entourant une fonctionnalité supplémentaire proposée pour shared_ptr< T[]>.
  • Absence de proposition formelle : Malgré des discussions informelles, aucune proposition officielle n'a jamais été été soumis au LWG pour la création de std::shared_ptr.

Statut actuel et perspectives d'avenir

Malgré l'hésitation historique , les récentes discussions ont ravivé l’intérêt des membres du LWG. Bien qu'un prototype ait été mis en œuvre, une proposition formelle reste en attente. La faisabilité et l'adoption finale de std::shared_ptr reste incertain.

Développements à venir

Un projet de TS (spécification technique) open-std.org propose la prise en charge des tableaux pour std::shared_ptr. Ce TS, s'il est adopté, introduirait std::shared_ptr dans le cadre de la norme C.

Mise à jour pour C 17

Le projet de TS a depuis été incorporé dans C 17, fournissant un support officiel pour std::shared_ptr. Reportez-vous au cas 3 de shared_ptr::shared_ptr() pour plus de détails.

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