Maison > développement back-end > C++ > La métaprogrammation avec état est-elle légale en C 17 ?

La métaprogrammation avec état est-elle légale en C 17 ?

DDD
Libérer: 2024-11-18 21:54:03
original
280 Les gens l'ont consulté

Is Stateful Metaprogramming Legal in C  17?

L'avenir de la métaprogrammation avec état est-il incertain ?

Dans le domaine de la métaprogrammation, surgit la technique intrigante des compteurs constexpr, connue sous le nom de métaprogrammation avec état. Cette technique complexe a suscité à la fois admiration et malaise parmi les développeurs. La question persiste : avec l'avènement de C 17, sa légalité a-t-elle été revisitée ?

Métaprogrammation avec état en C 14

Comme le démontre l'extrait de code fourni, la métaprogrammation avec état en C 14 C 14 exploite les déclarations d'ami, ADL et constexpr pour créer un compteur qui maintient son état lors des invocations. Malgré sa nature apparemment obscure, cette technique est légale sous C 14.

The Dark Cloud : CWG Issue 2118

Cependant, cette pratique a attiré l'attention des normes C. comité, en particulier à travers le numéro actif CWG numéro 2118. Le comité reconnaît l'obscurité de cette technique et plaide pour sa démarcation comme étant mal formée.

Position silencieuse de C 17

Malgré les préoccupations du CWG, la C 17 n'aborde pas explicitement cette question. Cela implique que la métaprogrammation avec état reste légale dans C 17, avec toutefois un avertissement indiquant que son sort pourrait être modifié à l'avenir.

Implications rétroactives

Un mécanisme d'interdiction devrait-il être conçue, il est possible que la métaprogrammation avec état soit rétroactivement considérée comme mal formée. Cela rendrait invalide l'extrait de code présenté dans la question, ce qui poserait des risques potentiels pour les bases de code existantes.

Conclusion

L'avenir de la métaprogrammation avec état reste incertain. Bien qu'elle soit toujours légale dans la C 17, le malaise du CWG face à cette technique suggère que ses jours sont peut-être comptés. Les développeurs qui utilisent cette technique doivent être conscients de cette mise en garde potentielle et surveiller les futures mises à jour de la norme C pour garantir l'intégrité de leur code.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal