Mientras leo sobre la elisión de copias, muchas de las fuentes solo mencionan C++ y no C.
Indican cómo el estándar C++ permite que se lleve a cabo esta optimización si el compilador decide que es lo correcto.
Pero, ¿y C? ¿Los compiladores de C realizan la elisión de copias, o el estándar de C garantiza que las copias nunca se optimizarán?
Tanto C como C++ permiten cualquier optimización que siga la regla como si . Dado que C no tiene constructores, y por lo tanto constructores con efectos secundarios, las copias pueden eliminarse sin romper esta regla. C ++, por otro lado, necesita hacer un caso especial en el que se permita que una implementación se rompa como si .
Entonces, la elisión de copia existe en C implícitamente a través de la regla como si .