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