C/C++ obviously have far too many precedence levels, but you can easily have a more readable tower without forcing parentheses, like Go's 5 levels: https://go.dev/ref/spec#Operator_precedence
`a + b | c + d` is still confusing and prone to misinterpretation in that scheme.
`a + b | c + d` is still confusing and prone to misinterpretation in that scheme.