当我了解复制省略时,许多来源只提到C ++而不是C。
它们指出,如果编译器决定这样做是正确的,C ++标准允许进行此优化。
但是对于C呢? C编译器是否执行复制省略,或者C标准保证永远不会优化掉副本?
当我了解复制省略时,许多来源只提到C ++而不是C。
它们指出,如果编译器决定这样做是正确的,C ++标准允许进行此优化。
但是对于C呢? C编译器是否执行复制省略,或者C标准保证永远不会优化掉副本?
无论是C还是C++,都允许遵循 as-if 规则的任何优化。由于C没有构造函数-因此没有具有副作用的构造函数-拷贝可以省略而不违反该规则。另一方面,C ++需要特殊处理,其中实现允许打破 as-if 规则。
因此,在C中,复制省略隐含地通过 as-if 规则存在。