xref: /llvm-project/clang/test/Parser/cxx-using-declaration.cpp (revision 0bba2b6110674d915b8dbbdf09f5c717f2d0ee20)
1 // RUN: clang-cc -fsyntax-only -verify %s
2 // XFAIL: *
3 
4 namespace A {
5     int VA;
6     void FA() {}
7     struct SA { int V; };
8 }
9 
10 using A::VA;
11 using A::FA;
12 using typename A::SA;
13 
14 int main()
15 {
16     VA = 1;
17     FA();
18     SA x;   //Still needs handling.
19 }
20 
21 struct B {
22     void f(char){};
23     void g(char){};
24 };
25 struct D : B {
26     using B::f;
27     void f(int);
28     void g(int);
29 };
30 void D::f(int) { f('c'); } // calls B::f(char)
31 void D::g(int) { g('c'); } // recursively calls D::g(int)
32 
33 namespace E {
34     template <typename TYPE> int funcE(TYPE arg) { return(arg); }
35 }
36 
37 using E::funcE<int>; // expected-error{{using declaration can not refer to a template specialization}}
38 
39 namespace F {
40     struct X;
41 }
42 
43 using F::X;
44 // Should have some errors here.  Waiting for implementation.
45 void X(int);
46 struct X *x;
47