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 f(C)11template<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 g(C,D)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> f(C,D)40void N::M::X<C>::f(C, D) { 41 C c; 42 D d; 43 } 44 45 template<typename C> f(C)46void N::M::Y::f(C) { 47 C c; 48 } 49 50 template<typename D> f(D)51void N::Y::f(D) { 52 D d; 53 } 54 55