c++ - static_assert 是否有助于优化编译器?

标签 c++ optimization assert

现代优化 C++ 编译器是否受益于 static_asserts?

例如,如果我断言一个整数只能在一个受限范围内,编译器是通过优化步骤携带该信息还是它仍然只是一个整数?

请不要回答编译器可以考虑它。问题在于当前的编译器是否会这样做。

最佳答案

不,静态断言不会为编译器增加执行优化的额外机会。原因是静态断言只能测试编译器无论如何都知道的条件(它还能如何评估断言?)。此外,静态断言只能在编译时失败,一旦编译就不再需要静态断言了。从这个意义上说,您用于断言的条件肯定会被编译器用于优化,但您在该条件下断言的事实对编译器来说并不是额外的信息。

免责声明:这是我根据有限的知识得出的结论。我很乐意阅读更复杂的答案。

关于c++ - static_assert 是否有助于优化编译器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48320989/

相关文章:

c++ - 在 C++ 中使用 assert() 是不好的做法吗?

python - Django assertTemplateUsed() 使用 Jinja 模板抛出异常

c++ - 如何自定义转换模板参数

c++ - 在 C++ 中将缓冲区导出为 WAV

c++ - 为分数重载运算符 +(使用 lcm)

Python - 从函数内部删除(从内存中删除)变量?

c++ - 断言释放 C++ 中的内存

c++ - 带有可变参数构造函数的好奇 Mixin

mysql - 数据库优化/规范化 - 外键出现在 "too many"表中

javascript - 在 IE 中 Javascript 的执行速度比 Firefox、Safari 和 Chrome 慢