https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119855
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution|--- |INVALID --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Since assert is a preprocessor function macro, a comma (without parentheses around it) is considered the next argument for the macro function. So you need to do `assert((f[0, 0] && ""));` this is true of all preprocessed function macros.