C 11 introduit le spécificateur constexpr pour les fonctions qui permet leur utilisation dans des expressions constantes comme les arguments de modèle. Cependant, cela soulève la question de savoir pourquoi ce mot-clé est requis et ce qu'il offre.
Révéler l'intention et prévenir une dépendance excessive
Exiger le mot-clé constexpr aide à mettre en valeur le l'intention du concepteur pour l'utilisation d'une fonction. Cela signifie que la fonction vise à encapsuler une expression constante. Cependant, cette contrainte sémantique n'est pas toujours validée, laissant au programmeur le soin de s'assurer :
Garantir l'intégrité du code client
En signalant les fonctions comme constexpr, les auteurs de bibliothèques indiquent que le code client peut s'appuyer sur elles dans de tels contextes. Cela empêche les clients d'utiliser la fonction par inadvertance d'une manière qui interromprait la compilation en cas de changement d'implémentation de la fonction.
Par exemple, sans constexpr, une fonction renvoyant une constante peut être supposée immuable. Cependant, une implémentation ultérieure qui récupère sa valeur à partir d'un fichier de configuration pourrait perturber les clients en fonction de sa constance. Constexpr garantit que le code client adhère à l'utilisation prévue de la fonction et évite les ruptures imprévues.
Éviter les dépendances indésirables
Constexpr aide également à empêcher le code client de dépendre de fonctions non constexpr . Comme pour les fonctions non membres const, constexpr garantit que le code client n'introduit pas de dépendances ou d'utilisations inattendues.
Étant donné que le compilateur n'applique pas les résultats constants à la compilation avec constexpr, il incombe au programmeur de concevoir des fonctions qui répondent à cette exigence.
Comparaison avec les fonctions membres non const
Analogue aux fonctions membres non const, constexpr :
Essentiellement, constexpr n'est pas strictement facultatif car il sert à clarifier l'intention, à prévenir les utilisations abusives et à protéger le code client des dépendances involontaires.
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!