3 // { dg-options "-gdwarf-4 -std=c++0x" }
5 namespace { typedef decltype (nullptr) T1; }
9 template <typename T, T __v>
10 struct C { static constexpr T value = __v; };
11 typedef C <bool, false> D;
15 struct F : C <bool, (E <T>::value)> {};
16 template <bool, typename T = void>
17 struct G { typedef T t; };
25 template <typename ...> struct J {};
26 template <typename> struct K;
29 template <typename B2>
32 template <typename T> static bool m2 (T) { return false; }
35 template <typename, typename> struct N;
36 template <typename T, typename B2, typename ... B4>
37 struct N <T (B4 ...), B2> : L::M <B2> {};
38 template <typename T, typename ... B4>
39 struct K <T (B4 ...)> :J <>, L
43 template <typename B2> K (B2, typename G <!F <B2>::value, P>::t = P ());
45 template <typename T, typename ... B1>
46 template <typename B2>
47 K <T (B1 ...)>::K (B2 __f, typename G <!F < B2>::value, P>::t)
59 template <typename T, typename _Dp = S <T>>
61 template <typename T, R _Lp = r2>
62 struct V { T *operator -> (); };
70 template <typename> struct Z;
75 struct AC { void operator () () {} };
77 template <typename T> using AD = U <T, AB::AC>;
82 void o3 (K <AZ ()>, bool = false) {}
83 template <typename, typename _Arg> struct AY;
85 template <typename T> struct AY <T, C1>
87 AZ operator () () { return AZ (); }
91 static AY <T, C1> _s1 (B, Z <T> *);
101 auto _s1 = AF::_s1 (__p, this);
105 template <typename T, typename _Alloc>
107 template <typename T, typename D1 = A::I <T>>
108 struct AH : AG <T, D1>
110 void bar (T) { baz (); }
111 template <typename ... _Args>
112 void baz (_Args && ...);
114 template <typename T, typename D1>
115 template <typename ... _Args>
116 void AH <T, D1>::baz (_Args && ...) {}
119 typedef A::K <void ()> AI;
124 AF (int, unsigned, AI __t) : v2 (), v1 (__t) {}
126 struct D3 : A::AH <AF>
129 void v3 (AI __t) { bar (AFT (4, v4, __t)); }