Me tropecé con esta pieza de código.llamando a sizeof en una llamada de función salta realmente llamar a la función!}
int x(int a){
std::cout<<a<<std::endl;
return a + 1;
}
int main()
{
std::cout<<sizeof(x(20))<<std::endl;
return 0;
}
Esperaba que imprimiera 20 seguido de 4. Pero simplemente imprime 4. ¿Por qué sucede esto? ¿No es incorrecto optimizar una función que tiene un efecto secundario (imprimir en IO/archivo, etc.)?
El código no llama a la función — ni siquiera manipula un puntero a la función. – wallyk