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 
10 template <typename T> void X<T>::foo() {}
11 template <typename T> void X<T>::bar() {}
12 template <typename T> void X<T>::baz() {}
13 
14 template <> void X<char>::foo() {}
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 
25 template <typename T> void X<T>::foo() {}
26 template <typename T> void X<T>::bar() {}
27 template <typename T> void X<T>::baz() {}
28 
29 template <> void X<char>::bar() {}
30 template <> void X<char>::foo() {}
31 }
32