https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118765
--- Comment #14 from Hime Haieto <himehaieto at gmail dot com> --- Said code *is* using -std=c23, so that's why. Don't worry - I'm not aware of this affecting any pre-c23 code. If you'd care for a bit more background, my code uses macros to define so-called compound types (with token pasting), along with singular types that should be compatible with that produced by other macros using the same identifiers. For instance, DEFINE_MAP(str, int, const char *, int *) might make a map_str_int type (later referenced simply with MAP(str, int) *my_map) mapping `const char *` keys to `int *` values, but also define an ITERATOR(str) and ITERATOR(int) to...do what's obvious. However, code traversing objects using an ITERATOR(str) should also be compatible with the ITERATOR(str) produced for a MAP(str, double) or a LIST(str). With your previous patch and careful use of __VA_OPT__ in my DEFINE macros, I can now make that MAP(str, int) and MAP(str, double) and get it to work, but the moment I'd add a third MAP(str, long), it would still break.