chamar sizeof em uma chamada de função ignora realmente chamar a função!}

Aconteceu de tropeçar neste pedaço 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>

Eu esperava que ele imprimisse 20 seguido de 4. Mas isso só imprime 4. Por que isso acontece? Não é incorreto otimizar uma função, que tem um efeito colateral (impressão para IO / arquivo etc)?

questionAnswers(5)

yourAnswerToTheQuestion