The reason the scope/noscope needs to be part of the function signature is because: 1. that makes it self-documenting 2. function bodies may be external, i.e. not present 3. virtual functions 4. notifies the user if a library function parameter scope-ness changes (you'll get a compile time error)