В этот ответ, int8_t* используется для (байт) арифметики указателя:
std::size_t offset = offsetof(Thing, b);
Thing* thing = reinterpret_cast<Thing*>(reinterpret_cast<int8_t*>(ptr) - offset);
Я всегда использовал char* в прошлом, но комментарии действительно сбивают с толку, и никто не ответил, поэтому я разместил этот отдельный вопрос.
Является ли char* действительным и предпочтительным способом выполнения этих вычислений?