http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50418
--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> 2011-09-15 12:17:48 UTC --- [basic.scope.class] A name N used in a class S shall refer to the same declaration in its context and when re-evaluated in the completed scope of S. No diagnostic is required for a violation of this rule. Which implies the program is ill-formed.