[temp.res] / 8:
If any actual specialization of the variational template requires an empty template package of parameters, the template is poorly formed, no diagnostics are required.
Any valid specialization f requires Ts be an empty package. Therefore, the program is a poorly formed NDR. Both compilers are correct.
Regarding GCC diagnostics, this seems to be due to its habit of using int as a placeholder for “what looks like a type but doesn't make sense” for error recovery purposes.
source share