Paramètres de modèle non-type et expressions intégrales constantes
Les paramètres de modèle non-type sont un outil précieux pour personnaliser les modèles, mais pourquoi est-il crucial qu'ils soient des expressions intégrales constantes ?
Considérez ce qui suit code :
template <std::string temp> void foo() { // ... }
La compilation de ce code génère l'erreur :
error C2993: 'std::string' : illegal type for non-type template parameter 'temp'.
Les paramètres de modèle non-type doivent être des expressions intégrales constantes telles qu'elles sont évaluées lors de la compilation. Cela permet la génération directe de code sans évaluation d'exécution. Les types comme std::string, qui peuvent changer au moment de l'exécution, ne peuvent pas être remplacés au moment de la compilation.
La norme stipule que les paramètres de modèle non-type ne peuvent être que les types suivants :
En limitant les paramètres de modèle non-type aux valeurs constantes de compilation, le compilateur peut générer du code efficace à au moment de la compilation, garantissant que le comportement du programme peut être entièrement déterminé et optimisé avant l'exécution.
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!