// RUN: %clang_cc1 -std=c++11 -verify %s namespace PR40329 { struct A { A(int); friend int operator->*(A, A); }; struct B : A { B(); enum E { e }; }; // Associated classes for B are {B, A} // Associated classes for B::E are {B} (non-transitive in this case) // // If we search B::E first, we must not mark B "visited" and shortcircuit // visiting it later, or we won't find the associated class A. int k0 = B::e ->* B::e; // expected-error {{non-pointer-to-member type}} int k1 = B::e ->* B(); int k2 = B() ->* B::e; }