While working on a larger change to destructor lookup I noticed that this
rule talks about declarators, but we weren't limiting the error to the case
where we're parsing a declarator. I don't know if this actually broke
anything, since a CPP_TEMPLATE_ID would have to have been parsed once
before, but it's more correct this way.
gcc/cp/ChangeLog:
* parser.c (cp_parser_unqualified_id): Only complain about ~A<T> in
a declarator.
/* DR 2237 (C++20 only): A simple-template-id is no longer valid as the
declarator-id of a constructor or destructor. */
- if (token->type == CPP_TEMPLATE_ID && cxx_dialect >= cxx20)
+ if (token->type == CPP_TEMPLATE_ID && declarator_p
+ && cxx_dialect >= cxx20)
{
if (!cp_parser_simulate_error (parser))
error_at (tilde_loc, "template-id not allowed for destructor");