https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90314
--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> --- Specifically, a new warning with -Wpedantic -Wsystem-headers and one of -std=gnu++98 or -std=c++98 or -ansi, but not with any later dialects. The alternatives are to leave the macro as it is now (which is valid C++98) and either - require the double parentheses whenever it's used with an expression containing commas and add the double parens to any other declarations (like the one in <type_traits>), or - only use the macro for expressions without commas and revert to using #if for swap in <bits/move.h> No other uses of it in the library today require the double parens, and very few declarations of function templates appear in more than one place.