https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86918
--- Comment #4 from Vladimir Reshetnikov <v.reshetnikov at gmail dot com> ---
I could not find a wording in the Standard that disallows this kind of
specialization (although certainly I might have overlooked it). A similar code
where the template parameter list is changed in a specialization compiles
successfully with GCC:
template<class>
struct Outer {
template<char... x>
struct Inner;
};
template<>
template<bool... x>
struct Outer<void>::Inner {
static constexpr auto value = sizeof...(x);
};
static_assert(Outer<void>::Inner<>::value == 0); // OK