首页 >后端开发 >C++ >模板参数可以依赖于 C 20 Consteval 函数中的函数参数吗?

模板参数可以依赖于 C 20 Consteval 函数中的函数参数吗?

DDD
DDD原创
2024-10-23 20:37:30253浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn