1// RUN: %clang_cc1 -fsyntax-only -verify %s 2 3namespace A { 4 int VA; 5 void FA() {} 6 struct SA { int V; }; 7} 8 9using A::VA; 10using A::FA; 11using typename A::SA; 12 13int main() 14{ 15 VA = 1; 16 FA(); 17 SA x; //Still needs handling. 18} 19 20struct B { 21 void f(char){}; 22 void g(char){}; 23}; 24struct D : B { 25 using B::f; 26 void f(int); 27 void g(int); 28}; 29void D::f(int) { f('c'); } // calls B::f(char) 30void D::g(int) { g('c'); } // recursively calls D::g(int) 31 32namespace E { 33 template <typename TYPE> int funcE(TYPE arg) { return(arg); } 34} 35 36using E::funcE<int>; // expected-error{{using declaration can not refer to a template specialization}} 37 38namespace F { 39 struct X; 40} 41 42using F::X; 43// Should have some errors here. Waiting for implementation. 44void X(int); 45struct X *x; 46 47 48namespace ShadowedTagNotes { 49 50namespace foo { 51 class Bar {}; 52} 53 54void Bar(int); // expected-note{{class 'Bar' is hidden by a non-type declaration of 'Bar' here}} 55using foo::Bar; 56 57void ambiguity() { 58 const Bar *x; // expected-error{{must use 'class' tag to refer to type 'Bar' in this scope}} 59} 60 61} // namespace ShadowedTagNotes 62