blob: fc6f8136b6153f79ce6a4c6579791fa85ebad317 [file] [log] [blame]
// PR c++/88181
// { dg-do compile }
// { dg-options "-fpack-struct -g -std=c++11" }
template <typename T> struct A { typedef T B; };
template <typename...> class C;
template <typename e> struct D { constexpr D (e) {} };
template <int, typename...> struct E;
template <int N, typename T, typename... U>
struct E<N, T, U...> : E<1, U...>, D<T> {
constexpr E (T x, U... y) : E<1, U...>(y...), D<T>(x) {}
};
template <int N, typename T> struct E<N, T> : D<T> {
constexpr E (T x) : D<T>(x) {}
};
template <typename T, typename U> struct C<T, U> : E<0, T, U> {
constexpr C (T x, U y) : E<0, T, U>(x, y) {}
void operator= (typename A<const C>::B);
};
struct F {};
struct G {};
int
main ()
{
F f;
G g;
constexpr C<F, G> c(f, g);
}