Hello @KUGA2.
Thanks for your feedback. We discussed this topic with the team and concluded that this is the desired behavior.
On the one hand, you are correct that the behavior with size_t correctly warps around, and the parenthesis does not influence the result in your particular example.
However, this particular case requires quite an advanced understanding of the language and the possible subtle nuances of an expression. For example, if an implicit conversion was at play, the result could be different. It also means that the writer and all the future readers of this code will have to figure out if it does what was intended. In your small example, this may be okay-ish. Still, in larger examples/functions, you would no longer be able to locally reason about your code – you would at least need to know the exact type, which can potentially be aliases or template parameters, to know if the expression is correct.
In other words, scenarios that behave identically regardless of parentheses are limited. Not having parentheses can result in confusion or brain overload – I think this is where we mostly disagree with you.
Additionally, it is often preferable to be consistent in a code base. From this point of view, it is better to always add the parenthesis regardless of the signedness of the types, their sizes, and whether they are templates.
Cheers