为什么我们需要将函数标记为constexpr? [英] Why do we need to mark functions as constexpr?
本文介绍了为什么我们需要将函数标记为constexpr?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
C ++ 11允许使用 constexpr
说明符声明的函数在常量表达式(如模板参数)中使用。对于允许 constexpr
有严格的要求;基本上这样的函数只封装一个子表达式而不包含其他。 (编辑:这是放宽在C ++ 14,但问题是。)
为什么要求关键字? 获得的是什么?
它有助于揭示接口的意图,但它不会通过保证函数在常量表达式中可用来验证该意图。写入 constexpr
函数后,程序员必须仍然:
- 编写测试用例
- 记录在常量表达式上下文中有效的参数值。
与显示意图相反,使用 constexpr
装饰函数可能会增加一种错误的安全感,因为检查切向语法约束而忽略中心语义约束。 / p>
总之:如果 constexpr
在函数声明中只是可选的?