C++ 11允许使用说明constexpr符声明的函数用于常量表达式,例如模板参数.对于允许的内容有严格的要求constexpr; 本质上这样的函数只包含一个子表达式,而不包含任何其他子表达式.(编辑:这在C++ 14中是放松的,但问题是.)
为什么要求关键字?得到了什么?
它确实有助于揭示接口的意图,但它不会通过保证函数在常量表达式中可用来验证该意图.编写constexpr函数后,程序员必须仍然:
与揭示意图相反,装饰功能constexpr可能会增加错误的安全感,因为在忽略中心语义约束的同时检查了切向句法约束.
简而言之:如果constexpr函数声明仅仅是可选的,那么对语言会有什么不良影响吗?或者对任何有效的程序都会有任何影响吗?
我是对的,那个:
constexpr都是纯函数,和constexpr如果编译器的价格不是很高,那么任何纯函数都可以并且必须定义.如果是这样,为什么不<cmath>定义函数constexpr?