p8.cpp revision 8e8fb3be5bd78f0564444eca02b404566a5f3b5d
1// RUN: %clang_cc1 -fsyntax-only -verify %s
2// expected-no-diagnostics
3
4namespace N {
5  enum { C };
6  template<class T> class B {
7    void f(T);
8  };
9}
10
11template<class C> void N::B<C>::f(C) {
12  C b;
13}
14
15namespace N {
16  enum { D };
17  namespace M {
18    enum { C , D };
19    template<typename C> class X {
20      template<typename U> void f(C, U);
21
22      template<typename D> void g(C, D) {
23        C c;
24        D d;
25      }
26    };
27
28    struct Y {
29      template<typename U> void f(U);
30    };
31  }
32
33  struct Y {
34    template<typename D> void f(D);
35  };
36}
37
38template<typename C>
39template<typename D>
40void N::M::X<C>::f(C, D) {
41  C c;
42  D d;
43}
44
45template<typename C>
46void N::M::Y::f(C) {
47  C c;
48}
49
50template<typename D>
51void N::Y::f(D) {
52  D d;
53}
54
55