c – 为什么constexpr不是所有功能的默认值?

这个问题在这里已经有一个答案:> Why do we need to mark functions as constexpr?4个
放松了constexpr的规则后,似乎这些功能可以随处可见.它们也可以在constant(constexpr)和local(mutable)变量上调用).所以对我来说,它似乎只是一个提示编译器(如内联).我只是继续写它到处,并删除它,如果编译器抱怨.所以编译器似乎知道一切,如果一个函数可以在编译时被评估.为什么不是认行为,为什么我必须将任何东西标记为constexpr?

解决方法

constexpr是一个接口保证.这意味着您可以使用常量表达式中的函数.

一旦人们可以用常量表达式使用它们,他们就会.但是,如果你不意味着你的功能被用于这种方式呢?如果您以前有一个简单的实现,恰好是constexpr可能的,但在稍后的修订版本中,您需要更改(例如,因为您现在需要添加日志输出)?

如果您删除了constexpr标记,常量表达式中的用法将停止编译,以前工作,并且您的函数用户将会不安.最好不要使函数constexpr成为第一位,让你更自由地更改它.

但是如果编译器自动使你的函数constexpr,你没有这个选择.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...