当我读到有关复制省略的文章时,许多来源只提到了C ++而不是C。
他们说明了如果编译器认为这是正确的事情,C ++标准如何允许进行这种优化。
但是C怎么样? C编译器是否执行复制省略,或者C标准保护者是否会永远不会优化副本?
答案 0 :(得分:5)
C和C ++都允许遵循 as-if 规则的任何优化。由于C不具有构造函数 - 因此具有副作用的构造函数 - 可以在不违反此规则的情况下省略复制。另一方面,C ++需要做一个特殊情况,允许实现以 as 来打破。
因此,通过 as-if 规则隐式地在C中复制elision。