// { dg-options "-std=gnu++0x" } template struct pair {}; template struct tuple { static const int value = 0; }; template<> struct tuple > { static const int value = 1; }; template struct tuple > { static const int value = 2; }; template struct tuple, pair > { static const int value = 3; }; template struct X { template struct Y { typedef tuple...> type; }; }; int a0[X::Y::type::value == 0? 1 : -1]; int a1[X::Y::type::value == 1? 1 : -1]; int a2[X::Y::type::value == 2? 1 : -1]; int a3[X::Y::type::value == 3? 1 : -1];