This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 119a. See http://www.open-std.org/jtc1/sc22/wg21/ for the official list.
2025-12-20
[Adopted at the February, 2016 meeting.]
The type/nontype hiding rules (“struct stathack”) do not apply in class scope. This is a Ccompatibility issue:
struct A { struct B { int x; } b; int B; // Permitted in C };Since the type/nontype hiding rules exist for C compatibility,should this example be supported?
Proposed resolution (September, 2015):
Change _N4868_.6.4.1 [basic.scope.declarative] paragraph 4 as follows:
Given a set of declarations in a single declarative region, each of whichspecifies the same unqualified name,
they shall all refer to the same entity, or all refer tofunctions and function templates; or
exactly one declaration shall declare a class name or enumeration namethat is not a typedef name and the other declarations shall all refer tothe same variable, non-static data member, or enumerator, or allrefer to functions and function templates; in this case the class name orenumeration name is hidden (_N4868_.6.4.10 [basic.scope.hiding]). [Note: Anamespace name or a class template name must be unique in its declarativeregion (9.9.3 [namespace.alias], Clause 13 [temp]).—end note]