https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92319

            Bug ID: 92319
           Summary: Macro expansion using the __VAOPT__ construct is
                    incorrect when the variadic argument expands to
                    nothing
           Product: gcc
           Version: 9.2.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: eldlistmailingz at tropicsoft dot com
  Target Milestone: ---

When the variadic arguments of a macro whose replacement lists uses the
__VA_OPT__ construct expand to nothing the gcc implementation is incorrect. As
an example from n4835 15.6.1 paragraph 3 shows:

#define F(...) f(0 __VA_OPT__(,) __VA_ARGS__)
#define EMP

F(EMP) should expand to the exact same thing as F(), which is f(0). But in gcc,
while F() expands to f(0), F(EMP) expands to f(0,). 

If you need a program which shows this incorrect expansion I can supply one for
you but you should be able to see this for yourself pretty easily.

Reply via email to