Maison >développement back-end >C++ >Les fonctions Consteval peuvent-elles légaliser les paramètres de fonction dans les paramètres de modèle en fonction des arguments de fonction ?

Les fonctions Consteval peuvent-elles légaliser les paramètres de fonction dans les paramètres de modèle en fonction des arguments de fonction ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-24 03:53:30525parcourir

Can Consteval Functions Legalize Function Parameters in Template Parameters Dependent on Function Arguments?

Fonctions Consteval : limitations des paramètres de modèle dépendant des arguments de fonction

En C 17, définition de fonctions constexpr qui s'appuient sur des paramètres de modèle dépendants de la fonction les disputes étaient interdites. Alors que les fonctions consteval en C 20 promettent d'appliquer l'évaluation au moment de la compilation, cela signifie-t-il qu'un tel code peut désormais être légalisé ?

Question :

consteval int foo(int i) { return std::integral_constant::value; }. Ce code sera-t-il valable en C 20 ?

Réponse :

Non.

Explication :

Malgré l'introduction des fonctions consteval, le principe sous-jacent reste que les définitions de fonctions non-modèles ont un seul point de résolution de type. Légaliser le code proposé aurait des implications pour la règle de définition unique (ODR). De plus, l'article C 20 indique explicitement que les paramètres de fonction ne seront pas traités comme des expressions constantes de base en raison de potentielles incompatibilités de types.

Par conséquent, les paramètres de fonction ne peuvent pas être directement utilisés comme expressions constantes dans les dépendances des paramètres de modèle, même dans des contextes de fonctions consteval.

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