c – 为什么constexpr不是所有功能的默认值?
发布时间:2020-12-16 06:01:24 所属栏目:百科 来源:网络整理
导读:这个问题在这里已经有一个答案: Why do we need to mark functions as constexpr?4个 放松了constexpr的规则后,似乎这些功能可以随处可见.它们也可以在constant(constexpr)和local(mutable)变量上调用).所以对我来说,它似乎只是一个提示编译器(如内联).我只
这个问题在这里已经有一个答案:>
Why do we need to mark functions as constexpr?4个
放松了constexpr的规则后,似乎这些功能可以随处可见.它们也可以在constant(constexpr)和local(mutable)变量上调用).所以对我来说,它似乎只是一个提示编译器(如内联).我只是继续写它到处,并删除它,如果编译器抱怨.所以编译器似乎知道一切,如果一个函数可以在编译时被评估.为什么不是默认行为,为什么我必须将任何东西标记为constexpr? 解决方法
constexpr是一个接口保证.这意味着您可以使用常量表达式中的函数.
一旦人们可以用常量表达式使用它们,他们就会.但是,如果你不意味着你的功能被用于这种方式呢?如果您以前有一个简单的实现,恰好是constexpr可能的,但在稍后的修订版本中,您需要更改(例如,因为您现在需要添加日志输出)? 如果您删除了constexpr标记,常量表达式中的用法将停止编译,以前工作,并且您的函数的用户将会不安.最好不要使函数constexpr成为第一位,让你更自由地更改它. 但是如果编译器自动使你的函数constexpr,你没有这个选择. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |