Кажется, что в этой книге предполагается, что компилятор встроен на уровне исходного кода, это, конечно, полностью зависит от компилятора.Большинство из них начнут встраивание на уровне AST, где могут и будут происходить преобразования и определенные оптимизации.Все это предполагает, что компилятор будет встроить код.
Если мы посмотрим на вашу функцию, любой приличный компилятор превратит их обоих в один и тот же код IR, так как онскомпилирует встроенную функцию до того, как она будет встроена, таким образом, временная функция требуется независимо (на уровне IR).когда IR тогда фактически встроен, временное будет свернуто и вместо этого заменено назначением назначения вызова на max
.
Когда мы компилируем до машинного кода, вещи могут измениться еще больше, неудаляются только временные файлы, но местом назначения, скорее всего, будет регистр (в данном случае), который, вероятно, также будет использоваться для одного из операндов источника.
Итог: Это полностью зависит от вашего компилятора, уровней оптимизации и того, как он выполняет анализ переменных живучести, распространения значений и свертывания.