Full name of submitter: Lénárd Szolnoki Reference (section label): [[expr.post.incr]](https://github.com/cplusplus/draft/blob/4eed7a0f1e44c45554f8a210af34fd6e1ea19596/source/expressions.tex#L3691-L3692) > The value of the operand object is modified by adding `1` to it. ### Issue description consider: ```cpp int8_t x = 127; x++; ``` This has undefined behavior: the value is increased by 1 but the resulting value is not representable in int8_t [[expr.pre]](https://eel.is/c++draft/expr.pre#4). In comparison [[expr.pre.incr]](https://github.com/cplusplus/draft/blob/4eed7a0f1e44c45554f8a210af34fd6e1ea19596/source/expressions.tex#L4721) in addition has: > The expression `++x` is equivalent to `x+=1`. Which in turn is equivalent to `x = x + 1`, except that `x` is evaluated only once. This implies that integral promotion rules are considered. Because of this the following is defined: ```cpp int8_t x = 127; ++x; ``` where `++x` is equivalent to `x = (int)x + 1`. ### Implementations GCC, clang and MSVC accept both examples above in constant expressions. They otherwise detect overflowing increments when no promotion is involved. ### Suggested resolution Spell out that the side effects of post-increment are equivalent to the side-effects of pre-increment, with the implied integral promotions.