ホームページ > バックエンド開発 > C++ > ステートフル メタプログラミングは C 17 で合法ですか?

ステートフル メタプログラミングは C 17 で合法ですか?

DDD
リリース: 2024-11-18 21:54:03
オリジナル
274 人が閲覧しました

Is Stateful Metaprogramming Legal in C  17?

ステートフル メタプログラミングの将来は不確実ですか?

メタプログラミングの領域では、ステートフル メタプログラミングとして知られる constexpr カウンターという興味深い手法が登場します。この複雑なテクニックは、開発者の間で賞賛と不安の両方を引き起こしました。 C 17 の出現により、その合法性は再検討されましたか?

C 14 のステートフル メタプログラミング

提供されたコード スニペットが示すように、C 14 のステートフル メタプログラミングはC 14 は、フレンド宣言、ADL、constexpr を利用して、呼び出し全体で状態を維持するカウンターを作成します。一見難解な性質にもかかわらず、この手法は C 14 の下で合法です。

The Dark Cloud: CWG Issue 2118

ただし、この手法は C 標準から厳しい監視を受けています。委員会は、特にアクティブな問題 CWG 問題 2118 を通じて、この技術の無名性を認識しており、その境界設定が不適切であることを主張しています。

C 17 のサイレント スタンス

CWG の懸念にもかかわらず、C 17 はこの問題に明示的に取り組んでいません。これは、将来的にその運命が変わる可能性があるという警告はあるものの、ステートフル メタプログラミングが引き続き C 17 で合法であることを意味します。ステートフル メタプログラミングが考案された後、遡って不正な形式であるとみなされる可能性があります。これにより、質問に示されているコード スニペットが無効になり、既存のコードベースに潜在的なリスクが生じます。

結論

ステートフル メタプログラミングの将来は依然として不確実です。 C 17 ではまだ合法ですが、CWG がこの手法に不快感を抱いていることから、その日が長くない可能性があることが示唆されています。この手法を採用する開発者は、この潜在的な警告を認識し、コードの整合性を確保するために C 標準の今後の更新を監視する必要があります。

以上がステートフル メタプログラミングは C 17 で合法ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート