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.

Reply via email to