Maison >développement back-end >C++ >Quelles sont les restrictions sur la spécialisation des modèles dans l'espace de noms std ?

Quelles sont les restrictions sur la spécialisation des modèles dans l'espace de noms std ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-30 18:59:30351parcourir

 What are the Restrictions on Specializing Templates within the std Namespace?

Restrictions de spécialisation dans l'espace de noms std

L'espace de noms std permet une spécialisation explicite de ses modèles, mais des limitations spécifiques existent.

Modèles interdits de spécialisation :

Selon au standard C, les modèles suivants ne peuvent pas être spécialisés dans l'espace de noms std :

  • numeric_limits pour les types non arithmétiques (par exemple, complexe) : Seuls les types arithmétiques peuvent être spécialisé.
  • shared_ptr et faible_ptr : Doit répondre à des exigences spécifiques en matière de copiabilité, d'assignabilité et de comparaisons.
  • hash : Les spécialisations doivent être conformes aux exigences du modèle de classe de hachage standard.
  • Traits de type () : Le comportement de spécialisation n'est pas défini, sauf autorisation explicite (par exemple, seules certaines spécialisations common_type sont autorisées).
  • Locales : Avoir les spécialisations requises.
  • istreambuf_iterator : Exiger un constructeur de copie trivial, par défaut constructeur et destructeur.
  • complexe pour types à virgule non flottante : Définir des spécialisations pour d'autres types est considéré comme inutile.
  • atomique : Doit avoir supprimé les opérations de copie et un constructeur de valeur constexpr.
  • fonction_unaire et fonction_binaire : Les spécialisations sont obsolètes et interdite.

Restrictions générales :

  • Toute spécialisation ne doit pas entrer en conflit avec les exigences du modèle d'origine.
  • Spécialisations et instanciations explicites des modèles de bibliothèque standard sont interdits sauf indication contraire explicite.
  • Spécialisations explicites des fonctions membres, des modèles de fonction ou les modèles de classes membres des classes de bibliothèque standard ont un comportement indéfini.

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