在放宽 constexpr 的规则后,这些函数似乎可以在任何地方使用。它们也可以在常量(constexpr)和局部(可变)变量上调用。所以对我来说,这似乎只是编译器的提示(如内联)。我只是继续在各处编写它,如果编译器抱怨则将其删除。因此,如果一个函数可以在编译时评估或不可以评估,编译器似乎知道一切。为什么它不是默认行为以及为什么我必须将任何内容标记为 constexpr ?
constexpr
是接口保证。这意味着您可以在常量表达式中使用该函数。
一旦人们可以在常量表达式中使用它们,他们就会这么做。但是,如果您不想以这种方式使用您的函数怎么办?如果您以前有一个简单的实现,恰好是 constexpr 可能的,但在以后的版本中您需要更改它(例如,因为您现在需要添加日志输出)怎么办?
如果删除 constexpr 标记,则常量表达式中的用法将停止编译(以前它可以正常工作),并且函数的用户将会感到不安。最好一开始就不要将函数设置为 constexpr,这样您以后可以更自由地更改它。
但如果编译器自动将你的函数设为 constexpr,你就没有这个选择了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)