https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114731
--- Comment #3 from Alejandro Colomar <alx at kernel dot org> --- The diagnostic is spurious, because of course if I call the following macro #define a2i(TYPE, ...) \ ( \ _Generic((TYPE) 0, \ long: a2sl(__VA_ARGS__), \ int: a2si(__VA_ARGS__), \ ) \ ) I only want to use the variant corresponding to the type that I passed, and of course the other variant will be incompatible with the one I want. That's the whole reason to use _Generic() in the first place.