http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41796
--- Comment #10 from Johannes Schaub <schaub.johannes at googlemail dot com> 2011-09-29 06:10:26 UTC --- (In reply to comment #9) > Excellent, then could you possibly comment on the implication for this PR? > (for > you it's easy, I'm sure) Hi, wanna chime in here. It has no implication on my original PR (I'm not taking a pointer to member), and has no implication on the example code Jason quoted from the draft (so CWG983 was just noise -.-). Perhaps it's useful to show more examples: struct A { int a; }; struct B : A { }; struct C : A { }; struct D : B, C { }; struct E : D { // valid, refers to one declaration using D::a; }; The above is valid in C++0x, and invalid in C++03. Certain uses of the alias name E::a are valid, while others are invalid (those that check subobject affinity) decltype(E::a) x; // valid int x = E().a; // invalid See WMM's paper at http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1543.pdf and the usenet discussion at http://groups.google.com/group/comp.lang.c++.moderated/browse_thread/thread/4ae640b13b0bd334/ .