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