Maison >développement back-end >C++ >Pourquoi `std::shared_ptr` n'a-t-il pas de spécialisation pour les types de tableaux ?

Pourquoi `std::shared_ptr` n'a-t-il pas de spécialisation pour les types de tableaux ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-10 02:47:02390parcourir

Why Doesn't `std::shared_ptr` Have a Specialization for Array Types?

Spécialisation de std::shared_ptr : une énigme

La bibliothèque standard C comprend un modèle spécialisé pour std : :unique_ptr qui appelle de manière appropriée delete[] dans son destructeur. Cependant, une spécialisation similaire est absente pour std::shared_ptr, ce qui nécessite l'utilisation d'un suppresseur personnalisé pour désallouer correctement les tableaux.

Raison du manque de spécialisation

Initialement , l'omission de std::shared_ptr la spécialisation semblait être un simple oubli. Cependant, il est apparu qu'il n'y avait pas de consensus au sein du groupe de travail sur les bibliothèques (LWG) sur l'ajout d'une telle fonctionnalité. La principale préoccupation provenait de la suggestion d'inclure des opérations arithmétiques sur shared_ptr, une fonctionnalité qui aurait pu être supprimée.

En fin de compte, l'absence de proposition pour std::shared_ptr la spécialisation s'est avérée décisive dans son omission du standard C. Bien que les discussions aient récemment repris entre les membres du LWG, aucune proposition formelle ne s'est encore concrétisée.

Statut actuel

Malgré l'absence de modèle spécialisé, C 17 a introduit la prise en charge partielle des tableaux. pour shared_ptr, comme spécifié dans le troisième cas de la méthode shared_ptr::shared_ptr(). Cette mise à jour permet la création et la destruction de tableaux à l'aide de shared_ptr, mais sans la commodité d'une spécialisation dédiée.

Perspectives futures

Le projet de TS (Spécification technique) N4077 a décrit une voie potentielle vers la prise en charge des tableaux dans shared_ptr, et cette fonctionnalité a finalement été incorporée dans C 17. Le développement continu de C pourrait apporter de nouvelles améliorations à cette fonctionnalité. zone, offrant une flexibilité et une expressivité supplémentaires pour la gestion des tableaux à l'aide de pointeurs partagés.

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