Maison > développement back-end > C++ > Le traitement Constexpr par GCC des fonctions de bibliothèque standard non Constexpr est-il une extension conforme ?

Le traitement Constexpr par GCC des fonctions de bibliothèque standard non Constexpr est-il une extension conforme ?

Susan Sarandon
Libérer: 2024-11-30 01:49:09
original
731 Les gens l'ont consulté

Is GCC's Constexpr Treatment of Non-Constexpr Standard Library Functions a Conforming Extension?

Le traitement des fonctions de bibliothèque standard non Constexpr comme Constexpr est-il une extension de compilateur conforme ?

Les normes C actuelles exigent que les fonctions de bibliothèque standard soient déclarées comme constexpr uniquement lorsque cela est explicitement requis. Cependant, les versions antérieures suggéraient le contraire.

C 11 et le projet de norme

Au cours du développement de C 11, une proposition visait à autoriser explicitement le traitement des fonctions de bibliothèque standard non constexpr comme constexpr. La décision de GCC de prendre en charge cette fonctionnalité en mode de conformité stricte était basée sur ce projet.

Changement de consensus dans C 14

Cependant, le consensus a changé au cours du développement de C 14. La proposition a été modifiée et la norme finale stipule qu'il est interdit aux implémentations de déclarer une fonction de bibliothèque standard constexpr sauf si cela est explicitement requis.

Ce changement découle de préoccupations concernant les comportements divergents entre les implémentations, car SFINAE pourrait en tirer parti pour produire différents résultats pour un code identique.

Conformité pour GCC

Implémentation actuelle de GCC pour cela case est une extension non conforme, car elle viole la norme C 14. Pour être conforme, GCC devrait émettre des avertissements ou désactiver cette fonctionnalité en mode de conformité stricte.

Intrinsèques

Les intrinsèques du compilateur, contrairement aux fonctions de bibliothèque standard, en sont exemptés. règle puisqu’ils ne sont pas couverts par la norme. Par conséquent, traiter les intrinsèques comme constexpr est généralement autorisé.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal