This is not a matter of recommended practise (nor undefined behavior), but about what the c++-standard actually guarantees in th
Yes, it's guaranteed.
Turning all bytes/bits of an integer type is guaranteed to make an instance of the type have the value of zero (0), as said by the below snippet(s) from the mentioned standard.
3.9.1/7 Fundamental types
A synonym for integral type is integer type. The representations of integral types shall define values by use of a pure binary numeration system.49
49positional representation for integers that uses the binary digits 0 and 1, in which the values represented by successive bits are additive, begin with 1, and are multiplied by successive integral power of 2, except perhaps for the bit with the highest position. (Adapted from the American National Dictionary for Information Processing Systems.)