Fonctions Consteval et dépendance des paramètres de modèle aux arguments de fonction
En C 17, utilisation d'une fonction qui renvoie une constante directement dans une déclaration de paramètre de modèle est interdit en raison de contraintes d'exécution d'exécution. Avec l'introduction des fonctions consteval dans C 20, ces contraintes devraient être supprimées. Cependant, cela permettra-t-il au code suivant de se compiler avec succès ?
1 2 3 |
|
Non.
Malgré l'exigence d'évaluation de la fonction consteval au moment de la compilation, la définition de la fonction elle-même uniquement subit une saisie une fois. En tant que tels, les paramètres de fonction ne seront jamais traités comme des expressions constantes de base en raison du potentiel de divergences de frappe.
Cette limitation est encore soulignée dans la proposition C 20, qui exclut explicitement les paramètres d'être considérés comme des expressions constantes dans son exemple. :
1 2 3 |
|
Par conséquent, les fonctions consteval ne permettent pas aux paramètres de modèle de dépendre des arguments de fonction car les paramètres n'ont pas les garanties de typage nécessaires en tant qu'expressions constantes.
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!