111
|
1 // PR middle-end/78716
|
|
2 // { dg-do compile }
|
|
3
|
|
4 template <typename = int, typename = int, typename = int, typename = int,
|
|
5 typename = int>
|
|
6 struct a;
|
|
7 template <typename> struct b;
|
|
8 template <typename = int, typename d = void> class e : b<d>::c {
|
|
9 public:
|
|
10 typedef e f;
|
|
11 typedef typename b<d>::c g;
|
|
12 e(__builtin_va_list *s) : g(__builtin_va_arg(*s, int)) {}
|
|
13 };
|
|
14 template <> struct b<void> { typedef e<> c; };
|
|
15 template <> struct e<> { template <typename h> e(h); };
|
|
16 template <typename i> class a<i> : public e<i> {};
|
|
17 template <typename i, typename j, typename k, typename l>
|
|
18 class a<i, j, k, l> : e<typename a<j>::f> {
|
|
19 public:
|
|
20 template <typename m, typename n, typename o, typename p>
|
|
21 a(a<m, n, o, p>) : a::f(0) {}
|
|
22 };
|
|
23 template <typename i, typename j, typename k, typename l> a<> r(i, j, k, l);
|
|
24 void q() { a<float, float>(r(4, 6, 9, 7)); }
|