1 // RUN: %clang_cc1 -fsyntax-only -verify %s
2 // expected-no-diagnostics
3 
4 namespace N {
5   enum { C };
6   template<class T> class B {
7     void f(T);
8   };
9 }
10 
11 template<class C> void N::B<C>::f(C) {
12   C b;
13 }
14 
15 namespace 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 
38 template<typename C>
39 template<typename D>
40 void N::M::X<C>::f(C, D) {
41   C c;
42   D d;
43 }
44 
45 template<typename C>
46 void N::M::Y::f(C) {
47   C c;
48 }
49 
50 template<typename D>
51 void N::Y::f(D) {
52   D d;
53 }
54 
55