https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80730
--- Comment #3 from Martin Sebor <msebor at gcc dot gnu.org> --- I don't see what purpose rejecting bool b = ""; serves when bool b = !!""; or even bool b = "" ? 1 : 0; are accepted. Even if it isn't 100% crystal clear, the standard encourages implementations to be permissive and treat additional expressions as constant, beyond the bare minimum it strictly requires. It may be of value to issue pedantic warnings for code that relies on more than the required minimum, but summarily rejecting it based on a minimalist reading is unfriendly, especially when more involved (and less intuitive) equivalent alternatives are accepted. All that achieves is that it penalizes users who write clean code, forcing them to come up with clunky workarounds.