Heim > Artikel > Backend-Entwicklung > Ist Stateful Metaprogramming in C 17 legal?
Im Bereich der Metaprogrammierung entsteht die faszinierende Technik der Constexpr-Zähler, bekannt als Stateful Metaprogramming. Diese komplizierte Technik hat bei Entwicklern sowohl Bewunderung als auch Unbehagen hervorgerufen. Die Frage bleibt bestehen: Wurde mit der Einführung von C 17 dessen Legalität überprüft?
Stateful Metaprogramming in C 14
Wie das bereitgestellte Code-Snippet zeigt, ist Stateful Metaprogramming in C 14 nutzt Friend-Deklarationen, ADL und constexpr, um einen Zähler zu erstellen, der seinen Zustand über alle Aufrufe hinweg beibehält. Trotz ihrer scheinbar geheimnisvollen Natur ist diese Technik gemäß C 14 legal.
The Dark Cloud: CWG Issue 2118
Diese Praxis wurde jedoch von den C-Standards genau unter die Lupe genommen Ausschuss, insbesondere durch aktive Ausgabe CWG-Ausgabe 2118. Der Ausschuss erkennt die Unklarheit dieser Technik und befürwortet ihre Abgrenzung als schlecht geformt.
Die stille Haltung von C 17
Trotz der Bedenken der CWG geht C 17 nicht explizit auf dieses Problem ein. Dies impliziert, dass zustandsbehaftete Metaprogrammierung in C 17 weiterhin legal bleibt, allerdings mit der Warnung, dass sich ihr Schicksal in Zukunft ändern könnte.
Rückwirkende Auswirkungen
Sollte ein Verbotsmechanismus vorhanden sein Es ist möglich, dass die zustandsbehaftete Metaprogrammierung rückwirkend als fehlerhaft angesehen wird. Dies würde das in der Frage dargestellte Code-Snippet ungültig machen und potenzielle Risiken für bestehende Codebasen mit sich bringen.
Fazit
Die Zukunft der Stateful Metaprogramming bleibt ungewiss. Während es in C 17 immer noch legal ist, deutet das Unbehagen der CWG mit der Technik darauf hin, dass ihre Tage gezählt sein könnten. Entwickler, die diese Technik einsetzen, sollten sich dieser potenziellen Einschränkung bewusst sein und zukünftige Aktualisierungen des C-Standards überwachen, um die Integrität ihres Codes sicherzustellen.
Das obige ist der detaillierte Inhalt vonIst Stateful Metaprogramming in C 17 legal?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!