Я не думаю, что реальная цель const
имеет много общего с оптимизацией, хотя это помогает.
Разве реальная ценность при проверке во время компиляции не мешает вам изменять вещи, которые вы не должны изменять, то есть предотвращать ошибки?
Для небольших аргументов, которые вы не собираетесь изменять, используйте call-by-value.
Для больших аргументов, которые вы не собираетесь изменять, используйте либо call-by-reference, либо передавая адрес (что по сути одно и то же) вместе с const
.
Для больших или маленьких аргументов, которые вы собираетесь изменить, отбросьте const
.
Кстати: если это новости, для реальной производительности вам нужно знать, как найти проблемы, которые у вас есть, с помощью профилирования. Ни один компилятор не может сделать это за вас.