But isn't the substitution taking place during linking? What's the harm if we extend that ability to cover typed functional parameters?
Why can't we extend the compiler to do this:
1. During the compile phase, replace a typed constant assigned to a formal parameter with a symbolic address.
2. During the linking phase, replace the symbolic address with a physical one.
There must be some complication level I'm missing ...
Additionally, we could extend default values to classes, as seen in my first example, and include other values that do not suffer from memory relocation, while also forbidding functional values. I mean, there are options here, no?