// RUN: %clang_cc1 -fsyntax-only -verify %s namespace A { int VA; void FA() {} struct SA { int V; }; } using A::VA; using A::FA; using typename A::SA; int main() { VA = 1; FA(); SA x; //Still needs handling. } struct B { void f(char){}; void g(char){}; }; struct D : B { using B::f; void f(int); void g(int); }; void D::f(int) { f('c'); } // calls B::f(char) void D::g(int) { g('c'); } // recursively calls D::g(int) namespace E { template <typename TYPE> int funcE(TYPE arg) { return(arg); } } using E::funcE<int>; // expected-error{{using declaration cannot refer to a template specialization}} namespace F { struct X; } using F::X; // Should have some errors here. Waiting for implementation. void X(int); struct X *x; namespace ShadowedTagNotes { namespace foo { class Bar {}; } void Bar(int); // expected-note{{class 'Bar' is hidden by a non-type declaration of 'Bar' here}} using foo::Bar; void ambiguity() { const Bar *x; // expected-error{{must use 'class' tag to refer to type 'Bar' in this scope}} } } // namespace ShadowedTagNotes