相关疑难解决方法(0)

为什么我们需要将函数标记为constexpr?

C++ 11允许使用说明constexpr符声明的函数用于常量表达式,例如模板参数.对于允许的内容有严格的要求constexpr; 本质上这样的函数只包含一个子表达式,而不包含任何其他子表达式.(编辑:这在C++ 14中是放松的,但问题是.)

为什么要求关键字?得到了什么?

它确实有助于揭示接口的意图,但它不会通过保证函数在常量表达式中可用来验证该意图.编写constexpr函数后,程序员必须仍然:

  1. 编写测试用例或以其他方式确保它实际用于常量表达式.
  2. 记录在常量表达式上下文中哪些参数值有效.

与揭示意图相反,装饰功能constexpr可能会增加错误的安全感,因为在忽略中心语义约束的同时检查了切向句法约束.


简而言之:如果constexpr函数声明仅仅是可选的,那么对语言会有什么不良影响吗?或者对任何有效的程序都会有任何影响吗?

c++ constexpr c++11

45
推荐指数
2
解决办法
2406
查看次数

constexpr与纯函数之间的关系

我是对的,那个:

  • 定义的任何函数constexpr都是纯函数,和
  • constexpr如果编译器的价格不是很高,那么任何纯函数都可以并且必须定义.

如果是这样,为什么不<cmath>定义函数constexpr?

c++ constexpr c++11

19
推荐指数
3
解决办法
2598
查看次数

标签 统计

c++ ×2

c++11 ×2

constexpr ×2