TITLE: Thoughts on name scoping PROBLEM: rmartin@rcmcon.com (Robert Martin), 11 Apr 94 [On the resolution of scope -BEFORE- the resolution of overloads] To override this rule only for member functions with different arguments would be a gross inconsistency of the scoping rules. RESPONSE: johnt@meaddata.com (John Townsend) You're comparing apples to oranges. [...] The "gross inconsistency" is in the arbitrary decision to hide overloaded functions in a base class, which violates the principle of inheriting its public behavior. RESPONSE: (Mark Terribile) No, the behavior _is_ consistent: namespaces overlay each other, and the names that are installed are installed _without_ signatures. RESPONSE: jamshid@ses.com (Jamshid Afshar) Right, Stroustrup writes in _The Design & Evolution of C++_ 3.5.3: "I saw it as a simple consequence of the usual scope rules. When arguing the point, I hold that the opposite rule -- names from derived and base classes are merged into a single scope -- give at least as many problems. In particular, state-changing functions would occasionally be called for sub-objects by mistake [...dangerous example...]". The name hiding rule was implemented very early on (C With Classes) although some compilers like g++ didn't implement it until recently. But, Stroutrup further writes about the dangerous example he presents "In retrospect, I suspect that the overloading rules introduced in 2.0 might have been able to handle this case [...]."