llamando a sizeof en una función, la llamada salta realmente llamando a la función!}

Me encontré con este pedazo de código.

<code>int x(int a){
    std::cout<<a<<std::endl;
    return a + 1;
}

int main()
{
    std::cout<<sizeof(x(20))<<std::endl;
    return 0;
}
</code>

Esperaba que se imprimiera 20 seguido de 4. Pero solo imprime 4. ¿Por qué sucede así? ¿No es incorrecto optimizar una función que tiene un efecto secundario (imprimir en IO / archivo, etc.)?

Respuestas a la pregunta(5)

Su respuesta a la pregunta