Re: [PATCH 01/10] compiler.h: add statically_false()
From: Vincent Mailhol
Date: Fri Dec 06 2024 - 13:03:42 EST
On Thu. 5 Dec 2024 at 03:30, David Laight <David.Laight@xxxxxxxxxx> wrote:
> From: Vincent Mailhol
> > Sent: 02 December 2024 17:33
> >
> > From: Vincent Mailhol <mailhol.vincent@xxxxxxxxxx>
> >
> > For completion, add statically_false() which is the equivalent of
> > statically_true() except that it will return true only if the input is
> > known to be false at compile time.
>
> This is pretty much pointless.
> It is just as easy to invert the condition at the call site.
To start with, I will argue that:
statically_false(foo)
is more pretty than
statically_true(!(foo))
In addition, the simple negation !(foo) only works if foo is a
boolean. If it is an integer, you would get the -Wint-in-bool-context
warning. Thus you would have to write:
statically_true((foo) == 0)
Anyone using this in a global header basically does not know what type
of argument they are getting. So, the (foo) == 0 trick is a must. But
because it is ugly, better to encapsulate it once for all. The
statically_false() is just cleaner and less error prone.
That said, I am not strongly opposed to removing statically_false(),
but in that case, I would also remove is_const_false(). For me, these
come as a pair, either we have both or we have none. Only having one
of these looked unbalanced.
Yours sincerely,
Vincent Mailhol