// PR c++/59988 // { dg-do compile { target c++11 } } template class C, typename... T> struct is_valid_specialization { typedef struct { char _; } yes; typedef struct { yes _[2]; } no; template class D, typename... U> static yes test(D*); template class D, typename... U> static no test(...); constexpr static bool value = (sizeof(test(0)) == sizeof(yes)); }; template struct Test1 { }; template struct Test2 { }; template struct TestV { }; static_assert(!is_valid_specialization::value, ""); static_assert(!is_valid_specialization::value, ""); static_assert(!is_valid_specialization::value, "");