Consteval 関数: 関数の引数に依存するテンプレート パラメーターの制限
C 17 では、関数に依存するテンプレート パラメーターに依存する constexpr 関数を定義します議論は禁止された。 C 20 の consteval 関数はコンパイル時の評価を強制することを約束していますが、これはそのようなコードが合法化できるという意味ですか?
質問:
consteval int foo(int i) { return std::integral_constant
答え:
いいえ。
説明:
consteval 関数の導入にも関わらず、非テンプレート関数定義は単一点の型解決を持つという基本原則は変わりません。提案されたコードを合法化すると、単一定義ルール (ODR) に影響を与える可能性があります。さらに、C 20 ペーパーでは、型の不一致の可能性があるため、関数パラメーターはコア定数式として扱われないと明示的に記載されています。
その結果、関数パラメーターは、テンプレート パラメーターの依存関係内で定数式として直接使用することはできません。 consteval 関数コンテキスト内。
以上がConsteval 関数は、関数の引数に応じてテンプレート パラメーター内の関数パラメーターを合法化できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。