编译器' constexpr '一切?



编译器是否尝试constexpr1所有?不只是函数/变量/程序员明确标记constexpr的东西?在有人评论之前

是的,这就是优化

这个问题的一个更好的短语可能是:在最大的优化编译器去,直到它不能constexpr别的什么?还是有一些实际的限制,或者其他的,意味着它只能constexpr程序的某个子集?

1read: evaluate/solve at编译时

编译器必须完成语言要求的一切。

最重要的是,编译器可以做任何它喜欢的事情,只要结果是,就好像没有做任何额外的事情。

所以这完全取决于编译器做什么,有很多非优化或几乎没有优化的编译器在那里。一个好的优化编译器会在编译时尽可能多地求值,但通常只会达到一些内部限制。否则它可能永远不会结束。否则编译器必须解决暂停问题。

也就是说,有几页c++代码做大量的计算,而编译器生成的二进制文件只包含puts("The answer is 42.n");,这总是很有趣的。

相关内容

  • 没有找到相关文章

最新更新