// RUN: %clang_cc1 -fsyntax-only -verify %s
namespaceA{classString;// expected-note {{target of using declaration}}
};using A::String;// expected-note {{using declaration}}
classString;// expected-error {{conflicts with target of using declaration}}
// rdar://8603569
unionvalue{char*String;};namespaceUnambiguousStaticMemberTemplate{// A static member template is not ambiguous if found in multiple base class
// subobjects.
structA{template<typename T>staticvoidf(T);staticvoidg();};structB:A{using A::f;using A::g;};structC:A{using A::f;using A::g;};structD:B,C{};voidf(D d){ d.f(0); d.g();}}namespaceUnambiguousReorderedMembers{// Static members are not ambiguous if we find them in a different order in
// multiple base classes.
structA{staticvoidf();};structB{staticvoidf(int);};structC:A,B{using A::f;using B::f;};// expected-note {{found}}
structD:B,A{using B::f;using A::f;};structE:C,D{};voidf(E e){ e.f(0);}// But a different declaration set in different base classes does result in ambiguity.
structX:B,A{using B::f;using A::f;staticvoidf(int,int);};// expected-note {{found}}
structY:C,X{};voidg(Y y){ y.f(0);}// expected-error {{found in multiple base classes of different types}}
}