3 // { dg-options "-fpack-struct -g -std=c++11" }
5 template <typename T> struct A { typedef T B; };
6 template <typename...> class C;
7 template <typename e> struct D { constexpr D (e) {} };
8 template <int, typename...> struct E;
9 template <int N, typename T, typename... U>
10 struct E<N, T, U...> : E<1, U...>, D<T> {
11 constexpr E (T x, U... y) : E<1, U...>(y...), D<T>(x) {}
13 template <int N, typename T> struct E<N, T> : D<T> {
14 constexpr E (T x) : D<T>(x) {}
16 template <typename T, typename U> struct C<T, U> : E<0, T, U> {
17 constexpr C (T x, U y) : E<0, T, U>(x, y) {}
18 void operator= (typename A<const C>::B);
28 constexpr C<F, G> c(f, g);