2 // { dg-do compile { target c++11 } }
3 // { dg-options "-fstack-usage" }
5 template <typename> struct A { typedef int type; };
7 typedef __SIZE_TYPE__ H;
9 template <typename> class allocator : B {};
10 template <typename _Alloc> struct C {
12 static typename T::H foo(T *);
13 typedef decltype(foo((_Alloc *)0)) H;
15 static typename A<H>::type bar(U) { return typename A<H>::type (); }
16 static int baz(_Alloc p1) { bar(p1); return 0; }
18 template <typename _Alloc> struct I : C<_Alloc> {};
19 template <typename, typename> struct J {
20 typedef I<allocator<int>> K;
23 struct D : J<int, allocator<int>> {
29 template <class Ch, class = int, class = int> struct F {
40 template <class Ch, class Tr, class Alloc> F<Ch, Tr, Alloc>::F(const Ch *) {
43 template <class Ch, class Tr, class Alloc>
44 F<Ch, Tr, Alloc> F<Ch, Tr, Alloc>::test() {
46 return F<Ch, Tr, Alloc> ();
48 G fn1() { return G(&n); }