ホームページ >バックエンド開発 >C++ >テンプレート パラメーターは C 20 Consteval 関数の関数の引数に依存できますか?

テンプレート パラメーターは C 20 Consteval 関数の関数の引数に依存できますか?

DDD
DDDオリジナル
2024-10-23 20:37:30256ブラウズ

Can Template Parameters Depend on Function Arguments in C  20 Consteval Functions?

関数の引数に依存する Consteval 関数とテンプレート パラメーター

C 17 では、コンパイラが依然として機能するため、テンプレート パラメーターは関数の引数に依存できません。非 constexpr 関数は、コンパイル時に評価される場合でも、実行時命令を生成する必要があります。

C 20 Consteval 関数

C 20 では、consteval 関数が導入されています。実行時の制約を削除して、コンパイル時に評価する必要があります。ただし、疑問は残ります: これは、テンプレート パラメーターが関数の引数に依存できるようになったことを意味しますか?

依存するテンプレート パラメーターに対する許可はありません

consteval 関数の導入にもかかわらず、答えはノーです。この文書では、パラメータがコア定数式として扱われることを意図していないことを認めています。これは、論文の例で示されているように、潜在的な型付けの不一致が原因です。

consteval int sqrsqr(int n) {
  return sqr(sqr(n)); // Not a constant-expression at this  point,
}                     // but that's okay.

したがって、関数パラメータは定数式とはみなされず、テンプレート パラメータが定数式に依存することはありません。

以上がテンプレート パラメーターは C 20 Consteval 関数の関数の引数に依存できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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