Fonctions Consteval et paramètres de modèle dépendants des arguments de fonction
En C 17, un paramètre de modèle ne peut pas dépendre d'un argument de fonction car le compilateur doit générer des instructions d'exécution pour les fonctions non constexpr, même si elles sont évaluées au moment de la compilation.
C 20 Fonctions Consteval
C 20 introduit les fonctions consteval, qui doit être évalué au moment de la compilation, supprimant ainsi la contrainte d'exécution. Cependant, la question demeure : cela signifie-t-il que les paramètres du modèle peuvent désormais dépendre des arguments de la fonction ?
Aucune allocation pour les paramètres de modèle dépendants
Malgré l'introduction des fonctions consteval, le la réponse est non. Le document reconnaît que les paramètres ne sont pas destinés à être traités comme des expressions constantes de base. Cela est dû à des divergences de typage potentielles, comme le démontre l'exemple de l'article :
consteval int sqrsqr(int n) { return sqr(sqr(n)); // Not a constant-expression at this point, } // but that's okay.
Par conséquent, les paramètres de fonction ne seront jamais considérés comme des expressions constantes, empêchant ainsi les paramètres de modèle d'en dépendre.
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!