This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 115d. See http://www.open-std.org/jtc1/sc22/wg21/ for the official list.
2024-10-26
[Voted into the WP at the February, 2012 meeting; moved to DR at the October, 2012 meeting.]
The rules regarding class scope and when the class is considered to be complete (normally implemented by deferred parsing of portions of class member declarations) are inconsistent and need to be clarified.
Proposed resolution (August, 2011):
Change 6.4.7 [basic.scope.class] paragraph 1 as follows:
Change 6.5.3 [basic.lookup.unqual] paragraph 7 as follows:
A name used in the definition of a class X outside of a member function body, default argument, brace-or-equal-initializer of a non-static data member, or nested class definition29 shall be declared in one of the following ways:...
Change 6.5.3 [basic.lookup.unqual] paragraph 8 as follows:
AFor the members of a class X, a name used in a member function body, in a default argument, in the brace-or-equal-initializer of a non-static data member (11.4 [class.mem]), or in the definition of a class memberfunction (11.4.2 [class.mfct]) of class Xoutside of the definition of X, following thefunction'smember's declarator-id [Footnote: That is, an unqualified name that occurs, for instance, in a typeor default argumentin the parameter-declaration-clause or in thefunction bodyexception-specification. —end footnote],or in the brace-or-equal-initializer of a non-static data member (11.4 [class.mem]) of class Xshall be declared in one of the following ways:...