[PATCH] assert: Support assert as variadic macro for C++26 [PR27276]

Tomasz Kaminski tkaminsk@redhat.com
Thu Feb 5 15:40:40 GMT 2026


On Thu, Feb 5, 2026 at 4:36 PM Florian Weimer <fweimer@redhat.com> wrote:

> * Tomasz Kamiński:
>
> > +#  if __ASSERT_VARIADIC
> > +#    define assert(...)
>       \
> > +     ((__VA_ARGS__)                                                  \
> > +      ? (void)(1 ? 1 : bool(__VA_ARGS__))                            \
> > +      : __assert_fail (#__VA_ARGS__, __ASSERT_FILE, __ASSERT_LINE,   \
> > +                       __ASSERT_FUNCTION))
>
> Doesn't this evaluate __VA_ARGS__ multiple times?
>
I got the same question initially when I saw this solution, but
the second bool(__VA_ARGS) is in the false branch of the ternary:
1 ? 1 : bool(__VA_ARGS__)
So it is never evaluated.


>
> Thanks,
> Florian
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://sourceware.org/pipermail/libc-alpha/attachments/20260205/243ba274/attachment.htm>


More information about the Libc-alpha mailing list