Maison > développement back-end > C++ > Pourquoi les chaînes ne peuvent-elles pas être utilisées comme paramètres de modèle non-type en C ?

Pourquoi les chaînes ne peuvent-elles pas être utilisées comme paramètres de modèle non-type en C ?

Linda Hamilton
Libérer: 2024-12-13 16:28:13
original
349 Les gens l'ont consulté

Why Can't Strings Be Used as Non-Type Template Parameters in C  ?

Pourquoi les paramètres de modèle non-type ne peuvent-ils pas être des chaînes ?

En C, les paramètres de modèle non-type doivent être des expressions intégrales constantes. Cependant, le code ci-dessous tente d'utiliser un std::string comme paramètre de modèle non-type :

template <std::string temp>
void foo()
{
     // ...
}
Copier après la connexion

Cela entraîne une erreur du compilateur indiquant que std::string est un type illégal pour un non- tapez le paramètre de modèle.

La raison de cette restriction est que les expressions non constantes ne peuvent pas être analysées et substituées lors de la compilation. Ils pourraient changer pendant l'exécution, ce qui nécessiterait la génération d'un nouveau modèle au moment de l'exécution. Étant donné que les modèles sont un concept au moment de la compilation, cela n'est pas possible.

La norme C 11 autorise explicitement uniquement certains types pour les paramètres de modèle non-type :

  • Types intégraux ou d'énumération
  • Pointeurs vers des objets ou des fonctions
  • Références Lvalue vers des objets ou fonctions
  • Pointeurs vers les membres
  • std::nullptr_t

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!

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