In C++, is it guaranteed that if I used the signed & unsigned versions of a fixed-width integer to perform an operation, I will get the same result? That is, if I do:
uint64_t a = [any number];
uint64_t b = [any number];
uint64_t resultOne = a + b;
uint64_t resultTwo = (uint64_t)(((int64_t) a) + ((int64_t) b));
Is it guaranteed that resultOne and resultTwo would always produce the same output no matter what values I use for a and b?