1*67e74705SXin Li // RUN: %clang_cc1 %s -emit-llvm-only 2*67e74705SXin Li 3*67e74705SXin Li namespace test0 { 4*67e74705SXin Li template <typename T> struct X { 5*67e74705SXin Li virtual void foo(); 6*67e74705SXin Li virtual void bar(); 7*67e74705SXin Li virtual void baz(); 8*67e74705SXin Li }; 9*67e74705SXin Li foo()10*67e74705SXin Litemplate <typename T> void X<T>::foo() {} bar()11*67e74705SXin Litemplate <typename T> void X<T>::bar() {} baz()12*67e74705SXin Litemplate <typename T> void X<T>::baz() {} 13*67e74705SXin Li foo()14*67e74705SXin Litemplate <> void X<char>::foo() {} bar()15*67e74705SXin Litemplate <> void X<char>::bar() {} 16*67e74705SXin Li } 17*67e74705SXin Li 18*67e74705SXin Li namespace test1 { 19*67e74705SXin Li template <typename T> struct X { 20*67e74705SXin Li virtual void foo(); 21*67e74705SXin Li virtual void bar(); 22*67e74705SXin Li virtual void baz(); 23*67e74705SXin Li }; 24*67e74705SXin Li foo()25*67e74705SXin Litemplate <typename T> void X<T>::foo() {} bar()26*67e74705SXin Litemplate <typename T> void X<T>::bar() {} baz()27*67e74705SXin Litemplate <typename T> void X<T>::baz() {} 28*67e74705SXin Li bar()29*67e74705SXin Litemplate <> void X<char>::bar() {} foo()30*67e74705SXin Litemplate <> void X<char>::foo() {} 31*67e74705SXin Li } 32