Наличие примитивного типа, который передается по значению const, практически бесполезно. Передача const в функцию, как правило, полезна в качестве контракта с вызывающей стороной, что функция не будет изменять значение. В этом случае, поскольку int передается по значению, функция не может вносить изменения, которые будут видны за пределами функции.
С другой стороны, ссылки и нетривиальные типы объектов всегда должны использовать const, если в объект не будут внесены какие-либо изменения. В теории это может позволить некоторую оптимизацию, но большой выигрыш - контракт, который я упомянул выше. Недостатком является, конечно, то, что он может сделать ваш интерфейс намного больше и сделать его сложным для внедрения в существующую систему (или с помощью стороннего API, не использующего const везде).