Я понимаю, что в целом существует значительная разница в передаче по значению и ссылке, особенно для нетривиальных типов, и что в основном это зависит от того, копируется ли объект или нет, с некоторыми оговорками, когда у нас есть rvalue.
Однако мне интересно, действительно ли компилятор распознает, что эти две вещи в некоторой степени идентичны, когда переданный аргумент является постоянным, и автоматически оптимизирует передачу по значению для передачи по ссылке? Если нет, я полагаю, что это стандарт - делать аргументы, передаваемые по ссылке почти всегда, верно?