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