Ответ 1
Вы должны использовать char*
: поведение при использовании reinterpret_cast
с int8_t*
на указателе на то, что не является int8_t
, равно undefined. Кастинг в char*
можно рассматривать как исключение из правила.
Pre С++ 14, char
может быть 1 дополняющим типом с диапазоном от -127 до +127. int8_t
должно быть 2 дополнения. Даже С++ 14 и далее, я не вижу, почему типы связаны: char
может по-прежнему быть либо подписанным, либо беззнаковым типом.