Consteval 函数:依赖于函数参数的模板参数的限制
在 C 17 中,定义依赖于函数的模板参数的 constexpr 函数禁止争论。虽然 C 20 中的 consteval 函数承诺强制执行编译时求值,但这是否意味着此类代码现在可以合法化?
问题:
consteval int foo(int i) { 返回 std::integral_constant
答案:
否。
解释:
尽管引入了 consteval 函数,但基本原则仍然是非模板函数定义具有单点类型解析。拟议代码的合法化将对单一定义规则(ODR)产生影响。此外,C 20 论文明确指出,由于潜在的类型不匹配,函数参数不会被视为核心常量表达式。
因此,函数参数不能直接用作模板参数依赖项中的常量表达式,甚至在 consteval 函数上下文中。
以上是Consteval 函数能否使依赖于函数参数的模板参数中的函数参数合法化?的详细内容。更多信息请关注PHP中文网其他相关文章!