我想知道为什么constexpr的优点没有被编译器优化?
编译器应该能够推断出一个值在编译时比人类更好(例如,如果对函数调用的所有输入都是已知的),那么它就应该能够将该值标记为已知后续分析,直到变得模棱两可为止。那么为什么要在这种情况下必须手动告诉编译器(而不是只使用const关键字,而是让编译器在编译时评估值)。
这是因为编译器技术尚无法执行此操作,还是因为某种固有的限制因素导致编译器无法这样做?
答案 0 :(得分:1)
如果省略constexpr
,则编译器很可能仍可以在编译时计算该值。
主要思想是,您可以告诉编译器您想要在编译时进行评估的内容,这样,当您犯错时,编译器会发出错误,并使用编译时无法评估的内容。 / p>
显然,它还允许在只允许使用编译时间常数(如数组大小)的地方使用这些值。