Mi è capitato di incappare in questo pezzo di codice.chiama sizeof su una chiamata di funzione salta effettivamente chiamando la funzione!}
int x(int a){
std::cout<<a<<std::endl;
return a + 1;
}
int main()
{
std::cout<<sizeof(x(20))<<std::endl;
return 0;
}
mi aspettavo di stampare 20 seguita 4. Ma esso stampa solo 4. Perché succede così? Non è corretto ottimizzare una funzione, che ha un effetto collaterale (stampa su IO/file, ecc.)?
Il codice non chiama la funzione —, non manipola nemmeno un puntatore alla funzione. – wallyk