// RUN: %clang_cc1 -std=c++11 %s -verify struct A { void f(); }; struct C { void f(); }; struct B : A { typedef A X; }; struct D : C { typedef C X; void g(); }; void D::g() { B * b = new B; b->X::f(); // lookup for X finds B::X } typedef int X; void h(void) { B * b = new B; b->X::f(); // lookup for X finds B::X }