http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52315
Jason Merrill <jason at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |INVALID
--- Comment #3 from Jason Merrill <jason at gcc dot gnu.org> 2012-02-20
22:44:01 UTC ---
3.3.7: 1) The potential scope of a name declared in a class consists not only
of the declarative region following the name’s point of declaration, but also
of all function bodies, brace-or-equal-initializers of non-static data members,
and default arguments in that class (including such things in nested classes).
So within B::value, A::stuff is in scope, so we need to wait until A is
complete to parse B::value, so B::value can't be used in constant expressions
in A.