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

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

DDD
DDDオリジナル
2024-11-20 22:14:13250ブラウズ

Is Stateful Metaprogramming Still Legal in C  17?

C 14 と C 17 におけるステートフル メタプログラミングの合法性

元の問題:

ステートフル メタプログラミング、次のような手法を使用constexpr カウンターにより、メタプログラミングでの状態操作が可能になります。 C 14 では合法ですが、言語のセマンティクスへの準拠に関して懸念が生じました。

質問:

ステートフル メタプログラミングのステータスは C 17 で変更されましたか?

CWG アクティブ問題 2118:

C 標準委員会は、これを潜在的な問題として認識し、CWG アクティブ問題 2118 として割り当てました。懸念されるのは、テンプレートでフレンド機能を利用することです。メタプログラミング状態をキャプチャして取得することは難解であり、形式が間違っていると宣言されるべきです。

C 17 の解決策:

2015 年 5 月の CWG 会議の時点では、問題は残っています。未解決。委員会は、そのような手法は不正な形式であるべきであることに同意しましたが、それらを禁止するメカニズムはまだ決定されていません。

現在の意味:

ステートフル メタプログラミング手法は技術的には残ります。 C 17 では合法です。ただし、最終的に禁止メカニズムが実装されると、遡ってこれらのテクニックが非準拠コードになる可能性があります。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。