// { dg-options "-std=gnu++0x" } template class tuple { }; template class... Metafunctions> struct apply_all { typedef tuple::type...> type; }; template struct is_same { static const bool value = false; }; template struct is_same { static const bool value = true; }; template struct add_pointer { typedef T* type; }; template struct add_pointer { typedef T& type; }; template struct add_reference { typedef T& type; }; template struct add_reference { typedef T& type; }; int a0[is_same::type,tuple<> >::value? 1 : -1]; int a1[is_same::type,tuple >::value? 1 : -1]; int a2[is_same::type,tuple >::value? 1 : -1]; int a3[is_same::type,tuple >::value? 1 : -1];