Les expressions constantes sont des expressions qui peuvent être évaluées au moment de la compilation. Les fonctions Constexpr sont des fonctions qui peuvent être évaluées au moment de la compilation si elles sont appelées avec des paramètres constexpr.
Dans le code, la fonction make_const est une fonction constexpr. Cependant, le paramètre i dans t1 n'est pas un paramètre constexpr, car il n'est pas spécifié comme const.
1 2 3 4 |
|
Pour résoudre ce problème, on peut soit faire de i un paramètre constant en changeant son type en const int, soit en définissant t1 comme une fonction constexpr elle-même :
1 2 3 4 |
|
1 2 3 4 |
|
Un autre problème survient lors de l'utilisation d'une fonction constexpr dans une fonction modèle destinée à renvoyer une valeur constexpr.
1 2 3 4 5 6 7 8 9 |
|
Dans ce cas, le compilateur ne peut pas garantir que le paramètre i soit une expression constante, car il dépend de la valeur du paramètre template passé à do_something. Pour garantir que t1 peut être évalué au moment de la compilation, le paramètre de modèle i doit être une expression constante.
Une approche alternative consiste à utiliser std::variant et std::integral_constant pour créer une constante de compilation qui peut être utilisé conjointement avec les valeurs d'exécution.
1 2 3 4 5 6 |
|
Cela permet de créer une variante constante de compilation qui peut être sélectionnée au moment de l'exécution à l'aide de std::visit.
1 2 3 4 |
|
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!