Have you measured the performance cost? I highly suspect it is not negligible, given that it's the most common way to write inner loops, which are the most performance-sensitive type of code.
Why would that be problematic?
for (int i = 0; i != n; i++)
sum += a[i];
If n is -2, will this function include the element at a[(uint64_t)INT_MAX + 1] in the sum? If signed overflow is UB, then the answer is "maybe", and thus i and n can legally be promoted to 64-bit. If signed overflow is unspecified, but the result must still fit in a 32-bit integer, then the answer is "no", and i and n can't legally be promoted.> the behavior isn't constrained
C++23, at least, does say
> The range of possible behaviors is usually delineated by this document.
So there are sometimes some constraints.