https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90188
Bug ID: 90188 Summary: ambiguous diagnostic "may not" Product: gcc Version: 9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: roland.illig at gmx dot de Target Milestone: --- From cp/parser.c: parser->type_definition_forbidden_message = G_("types may not be defined in iterator type"); The term "may not" is ambiguous. It can either mean: it could be that types are not defined in iterator type or: types should/must not be defined in iterator type In this case I guess it's the latter. The diagnostic should be worded more clearly. There's a reason that RFC 2119 does not include "may not" in its list of keywords.