62 lines · cpp
1// RUN: %clang_cc1 -fsyntax-only -verify %s2 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 cannot 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 ShadowedTagNotes62