Ваш случай довольно ясен. Это даже не ситуация, когда временные люди могут или не могут быть исключены. Скорее, ваша print
функция требует аргумента Object
-типа, поэтому его обязательно нужно будет построить.
В вашей ситуации нет места альтернативам, поэтому нет ничего, что могло бы зависеть от компилятора. Если вам нужна ситуация, которая оставляет место для оптимизаций, вы можете рассмотреть возможность передачи аргумента по значению: void print(Object);
. Теперь дело за компилятором, будет ли временный объект скопирован один раз или создан непосредственно в целевой функции. Это потому, что конструкторы копирования явно разрешены для исключения.