Métaprogrammation avec état : une menace mal formée en C
Le concept énigmatique de métaprogrammation avec état, illustré par le « compteur constexpr », a programmeurs C intrigués et perplexes. Bien qu'il semble autorisé dans C 14, son statut dans C 17 reste incertain.
Le mystérieux compteur Constexpr
Comme décrit dans l'article, le compteur constexpr exploite l'ADL mécanisme pour capturer et récupérer des informations avec état. En définissant une fonction ami dans un modèle et en la référençant ultérieurement, cela permet le stockage de l'état de métaprogrammation.
Contradiction et controverse
Cette technique contredit directement les directives précédentes sur le stockage états en métaprogrammation. Cela soulève des questions sur la validité de telles constructions obscures.
Problème actif du CWG
Le groupe de travail C (CWG) a reconnu ce problème (CWG Active Issue 2118). Ils ont convenu à l'unanimité que ces techniques devraient être mal formées, mais le mécanisme pour les interdire reste indéterminé.
Implications pour le C 17
Bien que le CWG n'ait pas définitivement déclaré métaprogrammation avec état mal formée, il est fort probable qu'une telle interdiction soit appliquée rétroactivement via un rapport de défaut (DR). D'ici là, sa légalité sous C 14 et son statut dans les futures normes C restent incertains.
Conclusion
La métaprogrammation avec état, bien qu'intrigante, est une menace potentielle pour la cohérence et la fiabilité de la métaprogrammation C. La recherche active par le CWG d'un mécanisme de mauvaise formation souligne la nécessité d'être prudent lors de l'emploi de ces techniques avancées. À mesure que C évolue, nous pouvons nous attendre à une résolution de ce problème qui clarifiera le rôle de la métaprogrammation avec état dans le paysage de la programmation.
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!