Const Parameters and Default Arguments
In the previous chapter, we saw how and when to use references in function parameters and return types. C++ has an additional qualifier, the const qualifier, which can be used independently from the ref-ness (whether the type is a reference or not) of the type.
Let's see how const is used in the various scenarios we investigated when looking at how functions can accept parameters.
Passing by const Value
In pass by value, the function parameter is a value type: when invoked, the argument is copied into the parameter.
This means that regardless of whether const is used in the parameter or not, the calling code cannot see the difference.
The only reason to use const in the function signature is to document to the implementation that it cannot modify such a value.
This is not commonly done, as the biggest value of a function signature is for the caller to understand the contract of calling the function. Because of this, it is rare to see int max(const int, const...