blob: 9446b086968c1da9344885f36e4aa868cc6644f0 [file] [log] [blame]
Argyrios Kyrtzidis106caf922010-06-19 19:28:53 +00001// Header for PCH test cxx-templates.cpp
2
Argyrios Kyrtzidis818c5db2010-06-23 13:48:30 +00003template <typename T1, typename T2>
Argyrios Kyrtzidis106caf922010-06-19 19:28:53 +00004struct S {
Argyrios Kyrtzidis818c5db2010-06-23 13:48:30 +00005 static void templ();
6};
7
8template <typename T>
9struct S<int, T> {
10 static void partial();
11};
12
13template <>
14struct S<int, float> {
15 static void explicit_special();
Argyrios Kyrtzidis106caf922010-06-19 19:28:53 +000016};
Argyrios Kyrtzidis69da4a82010-06-22 09:55:07 +000017
Argyrios Kyrtzidisb1d38e32010-06-25 16:25:09 +000018template <typename T, int y>
Argyrios Kyrtzidis69da4a82010-06-22 09:55:07 +000019T templ_f(T x) {
Argyrios Kyrtzidis0b0369a2010-06-28 09:31:34 +000020 int z = templ_f<int, 5>(3);
Argyrios Kyrtzidisb1d38e32010-06-25 16:25:09 +000021 return x+y;
Argyrios Kyrtzidis69da4a82010-06-22 09:55:07 +000022}
Argyrios Kyrtzidisbfcacee2010-06-24 08:57:31 +000023
Argyrios Kyrtzidis58e01ad2010-06-25 09:03:34 +000024void govl(int);
25void govl(char);
26
27template <typename T>
28struct Unresolv {
29 void f() {
30 govl(T());
31 }
32};
33
Argyrios Kyrtzidisbfcacee2010-06-24 08:57:31 +000034template <typename T>
35struct Dep {
36 typedef typename T::type Ty;
37 void f() {
38 Ty x = Ty();
39 T::my_f();
40 int y = T::template my_templf<int>(0);
Argyrios Kyrtzidisb8d3c632010-06-25 09:03:26 +000041 ovl(y);
Argyrios Kyrtzidisbfcacee2010-06-24 08:57:31 +000042 }
Argyrios Kyrtzidisb8d3c632010-06-25 09:03:26 +000043
44 void ovl(int);
45 void ovl(float);
Argyrios Kyrtzidisbfcacee2010-06-24 08:57:31 +000046};
47
48template<typename T, typename A1>
49inline T make_a(const A1& a1) {
50 return T(a1);
51}