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 | |