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