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

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

DDD
DDDoriginal
2024-11-20 22:14:13248parcourir

Is Stateful Metaprogramming Still Legal in C  17?

Légalité de la métaprogrammation avec état en C 14 vs. C 17

Problème original :

Métaprogrammation avec état, utilisant des techniques telles que Les compteurs constexpr permettent la manipulation d'état en métaprogrammation. Bien que légale sous C 14, des inquiétudes ont été soulevées quant à sa conformité avec la sémantique du langage.

Question :

Le statut de la métaprogrammation avec état a-t-il changé en C 17 ?

Problème actif du CWG 2118 :

Le Comité des normes C a reconnu cela comme un problème potentiel et l'a attribué comme numéro actif 2118 du CWG. Le problème est que l'utilisation de fonctions amies dans les modèles pour capturer et récupérer l'état de la métaprogrammation est obscure et devrait être déclaré mal formé.

Résolution en C 17 :

À la réunion du CWG de mai 2015, le problème n'est toujours pas résolu. Bien que le comité ait convenu que de telles techniques devraient être mal formées, le mécanisme permettant de les interdire reste à déterminer.

Implication actuelle :

Les techniques de métaprogrammation avec état restent techniquement légal en C 17. Cependant, lorsqu'un mécanisme d'interdiction est éventuellement mis en place, il peut rendre rétroactivement ces techniques non conformes au 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!

Déclaration:
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