But to clarify, and maybe I'm wrong, isn't it more accurate to say that the constness of the parameter itself is not part of the signature, but that the constness of an object taken in as a pointer or reference is part of the signature?
In other words a parameter, whether a value, or a reference, or a pointer, const doesn't matter -- but that is not the same thing as that which it is a pointer or a reference to, and its constness, which does matter.
Nope. Const is a compiler-enforced "promise" that can be easily violated with casting or aliasing. AFAIK, the linker doesn't even see it, since the compiler would have done all the enforcement work ahead of time.
Edit: Actually I think I see what you're getting at. And I think you're right. Const has to be part of the signature if the pointed-to object is const, because the compiler has to enforce that you don't pass const objects to parameters that take objects as non-const. But if you're taking it by value it doesn't matter because the value is copied and the copy will be const/non-const no matter what the source was.
He is right indeed, I was writing it up again but you both explained it already.
Quotes from the standard are metioned here on SO: http://stackoverflow.com/a/3681190 and in plain english the post below.