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