放松了constexpr的规则后,似乎这些函数可以在任何地方使用。可以在常量(constexpr)和局部(可变)变量上调用它们。因此对我来说,这似乎只是编译器的提示(如内联)。我只是一直在各处编写它,如果编译器抱怨,请将其删除。因此,编译器似乎知道什么都可以在编译时求值。为什么不是默认行为,为什么我必须将任何内容标记为constexpr?
constexpr
是接口保证。这意味着您可以在常量表达式中使用该函数。
一旦人们可以在常量表达式中使用它们,他们就会使用。但是,如果您不打算那样使用函数怎么办?如果您以前有一个可能实现constexpr的简单实现,但是在以后的版本中您需要更改它(例如,因为现在需要添加日志输出),该怎么办?
如果删除constexpr标记,则常量表达式中的用法将在以前工作时停止编译,并且该函数的用户将不高兴。最好不要一开始就使用constexpr函数,这样您以后可以自由更改它。
但是,如果编译器自动使您的函数成为constexpr,则您别无选择。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句