ステートフル メタプログラミング: C における不正な脅威
「constexpr カウンター」に代表されるステートフル メタプログラミングの謎めいた概念は、興味をそそられ当惑する C プログラマー。 C 14 では許可されているように見えますが、C 17 でのステータスは不確実なままです。
謎の Constexpr カウンタ
投稿で説明されているように、constexpr カウンタは ADL を利用します。ステートフルな情報をキャプチャおよび取得するメカニズム。テンプレート内でフレンド関数を定義し、後でそれを参照することで、メタプログラミング状態の保存が可能になります。
矛盾と論争
この手法は、保存に関する以前のガイドラインと直接矛盾します。メタプログラミングにおける状態。このような難解な構造の妥当性について疑問が生じます。
CWG のアクティブな問題
C ワーキング グループ (CWG) は、この問題を認識しました (CWG アクティブな問題 2118)。これらの技術は不正な形式であるべきであるということで全会一致で同意したが、それらを禁止するメカニズムは未決定のままである。
C 17 への影響
CWG は明確に宣言していないが、ステートフル メタプログラミングの形式が正しくないため、そのような禁止事項が欠陥レポートを通じて遡及的に適用される可能性が非常に高い(DR)。それまでは、C 14 での合法性と将来の C 標準におけるその地位は不確実なままです。
結論
ステートフル メタプログラミングは興味深いものではありますが、一貫性に対する潜在的な脅威です。そしてCメタプログラミングの信頼性。 CWG が異常形成メカニズムを積極的に追求していることは、これらの高度な技術を使用する際には注意が必要であることを強調しています。 C が進化するにつれて、プログラミング環境におけるステートフル メタプログラミングの役割を明確にするこの問題の解決が期待できます。
以上がステートフル メタプログラミングは C の一貫性に対する脅威ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。