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

前端之家收集整理的这篇文章主要介绍了c – 为什么constexpr不是所有功能的默认值?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这个问题在这里已经有一个答案:> Why do we need to mark functions as constexpr?4个
放松了constexpr的规则后,似乎这些功能可以随处可见.它们也可以在constant(constexpr)和local(mutable)变量上调用).所以对我来说,它似乎只是一个提示编译器(如内联).我只是继续写它到处,并删除它,如果编译器抱怨.所以编译器似乎知道一切,如果一个函数可以在编译时被评估.为什么不是默认行为,为什么我必须将任何东西标记为constexpr?

解决方法

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

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

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

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

原文链接:https://www.f2er.com/c/112975.html

猜你在找的C&C++相关文章