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 ?
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
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!