On 09/04/2018 21:39, Jason Merrill wrote:
Nice, it looks like this also fixes the prehistoric c++/24314, which I
still had assigned. When I worked a bit on it, relatively recently, in
2012, I failed to properly follow-up to your feedback on the mailing
list, but I don't think we really nailed the problem, did we?
cp_parser_check_template_parameters is supposed to catch when we have
the wrong number of template parameter lists, but it wasn't diagnosing
this case. Fixed by checking whether the thing we're declaring used a
template-id; the case of declaring a primary template, when we allow
one more template parameter list, uses a plain identifier.
Or maybe we just tried to do too much, like doing away completely with
cp_parser_check_template_parameters in favor of a bit of additional
checking in maybe_process_partial_specialization.