// { dg-options "-std=gnu++0x" } template class Meta, int Initial, int... Values> struct accumulate { static const int value = Initial; }; template class Meta, int Initial, int Value, int... Rest> struct accumulate { static const int value = Meta::value>::value; }; template struct sum { static const int value = X + Y; }; template struct prod { static const int value = X * Y; }; int a0[accumulate::value == 15? 1 : -1]; int a1[accumulate::value == 120? 1 : -1];