Maison  >  Article  >  développement back-end  >  Les paramètres du modèle peuvent-ils dépendre des arguments de fonction dans les fonctions Consteval C 20 ?

Les paramètres du modèle peuvent-ils dépendre des arguments de fonction dans les fonctions Consteval C 20 ?

DDD
DDDoriginal
2024-10-23 20:37:30163parcourir

Can Template Parameters Depend on Function Arguments in C  20 Consteval Functions?

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!

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