现代优化C ++编译器是否受益于static_asserts?
例如,如果我断言一个整数只能在一个受限制的范围内,那么编译器是通过优化步骤携带该信息还是只是一个整数?
请不要回答编译器可能会考虑到这一点。问题是关于当前的编译器是否这样做。
答案 0 :(得分:1)
不,静态断言不会为编译器添加额外的机会来执行优化。原因是静态断言只能测试编译器无论如何都知道的条件(如何评估断言?)。此外,静态断言只能在编译时失败,一旦编译就不再需要静态断言了。从这个意义上说,用于断言的条件当然是由编译器用于优化的,但是在该条件下断言的事实不是编译器的附加信息。
免责声明:这是我从有限的知识中得出的结论。我很乐意阅读更复杂的答案。