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