微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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.jb51.cc/c/112975.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐